web-dev-qa-db-fra.com

Comment définir les champs d'en-tête Accept et Accept-Language?

Je peux définir Request.Content-Type = ..., Request.Content-Length = ...

Comment définir Accept et Accept-Language?

Je veux télécharger un fichier (RFC 1867) et je dois créer une demande comme celle-ci:

 POST /test-upload.php.xml HTTP/1.1 
 Hôte: example.com 
 Agent utilisateur: Mozilla/5.0 (Windows NT 5.2; WOW64; version: 2.0.1) Gecko/20100101 Firefox /4.0.1
Accept: text/html, application/xhtml + xml, application/xml; q = 0,9, */*; q = 0,8 
 Accept-Language: tr-tr, tr; q = 0,8 , en-us; q = 0,5, en; q = 0,3 
 Encodage accepté: gzip, deflate 
 Jeu de caractères accepté: ISO-8859-9, utf-8; q = 0,7, *; q = 0,7 
 Keep-Alive: 115 
 Connexion: Keep-Alive 
 Content-Type: multipart/form-data; borne = --------------------------- 21724139663430 
 Contenu-Longueur: 56048 
20
Mennan

Jetez un oeil à Accepter la propriété :

HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(myUri);
myHttpWebRequest.Accept="image/*";    
HttpWebResponse myHttpWebResponse=
         (HttpWebResponse)myHttpWebRequest.GetResponse();

Cet article MSDN montre comment ajouter des en-têtes personnalisés à votre demande:

//Get the headers associated with the request.
WebHeaderCollection myWebHeaderCollection = myHttpWebRequest.Headers;    

//Add the Accept-Language header (for Danish) in the request.
myWebHeaderCollection.Add("Accept-Language:da");

//Include English in the Accept-Langauge header. 
myWebHeaderCollection.Add("Accept-Language","en;q=0.8");
33
Dyppl

Lorsque vous souhaitez définir le type d'acceptation et le type de contenu, il suffit de transtyper la requête Web en HttpwebRequest.

var webreq= (HttpWebRequest)WebRequest.Create(requestUri);
webreq.Method = "POST";
webreq.Accept = "application/json";
webreq.ContentType = "application/json";
2
Adi_Pithwa

Vous devez vous assurer que vous tapez la requête pour transtyper la demande en (HttpWebRequest), où la propriété accept header est disponible.

Dans l'ancienne classe WebRequest, l'en-tête Accept n'est pas accessible.

2

Je dois confirmer après plusieurs tentatives ennuyeuses d’utiliser les en-têtes que le

La solution myWebHeaderCollection.Add("foo","bar"); fonctionne parfaitement.

si vous voulez définir la langue.

myWebHeaderCollection.Add("AcceptCharset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
myWebHeaderCollection.Add("TransferEncoding", "gzip,deflate");

Ne définit pas les valeurs cependant. Ce qui peut sembler une conclusion logique étant donné que le premier fonctionne.

1
twobob

Si vous utilisez HttpRequestMessage , définissez l'en-tête à l'aide de la méthode Headers.Add. Dans ton cas :

request.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
0
lvanzyl