How to set Accept and Accept-Language header field

2019-01-18 19:13发布

I can set Request.Content-Type = ... , Request.Content-Length = ...

How to set Accept and Accept-Language?

I want to upload a file (RFC 1867) and need to create a request like this:

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

5条回答
虎瘦雄心在
2楼-- · 2019-01-18 19:45

I have to confirm after several annoying attempts to use the headers that the

myWebHeaderCollection.Add("foo","bar"); solution works perfectly.

if you want to set the Language.

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

Does not set the values however. Which may seem like a logical conclusion given the first one works.

查看更多
家丑人穷心不美
3楼-- · 2019-01-18 19:51

If you are using HttpRequestMessage, set the header using Headers.Add method. In your case :

request.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
查看更多
兄弟一词,经得起流年.
4楼-- · 2019-01-18 19:52

When you want to set the Accept type and content type, just cast the webrequest to HttpwebRequest

var webreq= (HttpWebRequest)WebRequest.Create(requestUri);
webreq.Method = "POST";
webreq.Accept = "application/json";
webreq.ContentType = "application/json";
查看更多
小情绪 Triste *
5楼-- · 2019-01-18 20:01

Take a look at Accept property:

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

This MSDN article shows how to add custom headers to your request:

//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");
查看更多
贪生不怕死
6楼-- · 2019-01-18 20:07

You need to be sure that you type cast the request to (HttpWebRequest), where the accept header property is available.

In the old WebRequest class, the Accept header is not accessible.

查看更多
登录 后发表回答