如何设置Accept和Accept-Language标题字段?

我可以设置Request.Content-Type = …,Request.Content-Length = …

如何设置Accept和Accept-Language?

我想上传一个文件(RFC 1867),需要创建一个这样的请求:

 POST /test-upload.php.xml HTTP / 1.1
主持人:example.com
 User-Agent:Mozilla / 5.0(Windows NT 5.2; WOW64; rv:2.0.1)Gecko / 20100101 Firefox / 4.0.1
接受: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
保持活力:115
连接:保持活力
内容类型:multipart / form-data; 边界= --------------------------- 21724139663430
内容长度:56048

看看Accept属性 :

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

此MSDN文章显示了如何向您的请求添加自定义标头:

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

您需要确保键入转换请求(HttpWebRequest),其中accept header属性可用。

在旧的WebRequest类中,无法访问Accept标头。

如果要设置Accept类型和内容类型,只需将webrequest转换为HttpwebRequest

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

经过几次恼人的尝试后,我必须确认使用标题

myWebHeaderCollection.Add("foo","bar"); 解决方案完美无缺

如果你想设置语言。

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

但是不设置值。 鉴于第一个有效,这似乎是一个合乎逻辑的结论。

如果您使用的是HttpRequestMessage ,请使用Headers.Add方法设置标头。 在你的情况下:

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