C# 如何设置接受和接受语言标题字段?

C# 如何设置接受和接受语言标题字段?,c#,httpwebrequest,C#,Httpwebrequest,我可以设置Request.Content-Type=,Request.Content-Length= 如何设置接受和接受语言 我想上传一个文件(RFC 1867),需要创建如下请求: 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,

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

如何设置接受和接受语言

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

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 POST/test-upload.php.xml HTTP/1.1 主持人:example.com 用户代理: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 接受语言:tr,tr;q=0.8,在美国;q=0.5,en;q=0.3 接受编码:gzip,deflate 接受字符集:ISO-8859-9,utf-8;q=0.7,*;q=0.7 活命:115 连接:保持活力 内容类型:多部分/表单数据;边界=------------------------------------21724139663430 内容长度:56048 看看:

显示如何向请求中添加自定义标题:

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

在几次恼人的尝试后,我不得不确认

myWebHeaderCollection.Add(“foo”、“bar”)解决方案非常有效

如果要设置语言

myWebHeaderCollection.Add("AcceptCharset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
myWebHeaderCollection.Add("TransferEncoding", "gzip,deflate");
但是,不设置值。鉴于第一个方法有效,这似乎是一个合乎逻辑的结论。

如果使用,请使用Headers.Add方法设置标题。就你而言:

request.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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";

但现在我有一个问题…我发送了图像和音频文件,但只发送了图像文件。没有音频文件。这可能与我的标题或attirubutes有关吗?@Mennan:什么问题?@Mennan:你可能需要问另一个问题,并提供适当数量的信息,如果没有适当的代码示例和结果描述,很难说出什么。嗯,好的,我会在10分钟内完成。谢谢你的帮助。令人恼火的是(因为这是不可理解的),然而,微软不仅选择忽略HTTP模型,而是发明了自己的“方便”模型(例如,在一个表示请求的对象上有一个Accept属性,而这只是一个HTTP头),但如果不确保泛型方法工作,那将是雪上加霜!尝试用它设置“Accept”,你会得到ArgumentException,说你不能设置“受限头”(他们模型的一个工件,与HTTP无关)。
var webreq= (HttpWebRequest)WebRequest.Create(requestUri);
webreq.Method = "POST";
webreq.Accept = "application/json";
webreq.ContentType = "application/json";