强制HttpClient使用Content-Type:text / xml

这让我疯了,我在任何地方设置ContentType标头,似乎无法让它停止发送text / plain。

在Fiddler中查看数据时,请求始终请求:

POST http:/domain.com HTTP / 1.1

Content-Type:text / plain; 字符集= utf-8的

using (var httpClient = new HttpClient()) { var request = new HttpRequestMessage(HttpMethod.Post, "http://domain.com"); request.Content = new StringContent(Serialize(obj), Encoding.UTF8, "text/xml"); request.Content.Headers.Clear(); request.Content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); request.Headers.Clear(); request.Headers.Add("Content-Type","text/xml"); var response = await httpClient.SendAsync(request); return await response.Content.ReadAsStringAsync(); } 

看起来你试图努力:)这应该只是工作。

 using (var httpClient = new HttpClient()) { var request = new HttpRequestMessage(HttpMethod.Post, "http://domain.com"); request.Content = new StringContent(Serialize(obj), Encoding.UTF8, "text/xml"); var response = await httpClient.SendAsync(request); return await response.Content.ReadAsStringAsync(); } 

尝试设置默认请求标头:

 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml")); 

使用“application / xml”代替“text / xml”