Принуждение HttpClient к использованию Content-Type: text/xml
Это сводит меня с ума, я устанавливаю заголовок ContentType везде, где могу, и не могу заставить его прекратить отправку текста /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();
}
Ответы
Ответ 1
Похоже, вы пытались усердно:) Это должно сработать.
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();
}
Ответ 2
Попробуйте настроить заголовки запросов по умолчанию:
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));
Ответ 3
Используйте "application/xml" вместо "text/xml"