2011-06-03 19 views
18

Puedo establecer Request.Content-Type = ..., Request.Content-Length = ...¿Cómo se configuran los campos de encabezado Accept y Accept-Language?

Cómo configurar Aceptar y aceptar? Idioma?

Quiero cargar un archivo (RFC 1867) y la necesidad de crear una solicitud de la siguiente manera:

 
POST /test-upload.php.xml HTTP/1.1 
Host: example.com 
User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv: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 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-9,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Content-Type: multipart/form-data; boundary=---------------------------21724139663430 
Content-Length: 56048 

Respuesta

31

Tome un vistazo a Accept property:

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

This MSDN article muestra cómo agregar encabezados personalizados a su solicitud:

//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"); 
+0

pero ahora tengo un problema ... puedo enviar archivos de imagen y sonido, pero sólo los archivos de imagen fue enviar. No hay archivo de audio. ¿Puede ser sobre mis encabezados o archivos de audio? – Mennan

+0

@Mennan: ¿qué tipo de problema? – Dyppl

+0

@Mennan: probablemente tenga que hacer otra pregunta con la cantidad apropiada de información, es difícil decir algo sin la muestra de código adecuada y la descripción del resultado – Dyppl

1

Tengo que confirmar después de varias molestias g intenta utilizar los encabezados que la solución

myWebHeaderCollection.Add("foo","bar"); funciona a la perfección.

si desea establecer el idioma.

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

Sin embargo, no establece los valores. Lo cual puede parecer una conclusión lógica dado que el primero funciona.

+2

exasperantemente (porque es incomprensible), sin embargo, Microsoft eligió no solo ignorar el modelo HTTP e inventar su propio modelo "conveniente" (por ejemplo, teniendo una propiedad Aceptar sobre un objeto que representa una solicitud, cuando esto es solo un encabezado HTTP), sino ¡agregue insulto a la herida ni siquiera asegurándose de que los métodos genéricos funcionen! Intenta configurar "Aceptar" con esto, y obtienes ArgumentException diciendo que no puedes establecer "encabezados restringidos" (un artefacto de su modelo, nada que ver con HTTP). –

0

Si está utilizando HttpRequestMessage, configure el encabezado usando el método Headers.Add. En su caso:

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

Usted necesita estar seguro de que escriba emitir el pedido a (HttpWebRequest), en el que acepta propiedad de la cabecera está disponible.

En la clase anterior de WebRequest, no se puede acceder al encabezado Aceptar.

0

Cuando se desea establecer el tipo y el tipo de contenido Aceptar, simplemente emitir el WebRequest a HttpWebRequest

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