Consuming xml using HttpClient from webapi

三世轮回 提交于 2019-12-12 11:04:47

问题


I used WebClient to get an Xml object from a restfull service (.net web api) and everything worked great:

using(WebClient client = new WebClient())
{
   client.Encoding = UTF8Encoding.UTF8;
   client.Headers[HttpRequestHeader.ContentType] = "text/xml";
   client.Credentials = // ....;
   xmlResult = webClient.DownloadString(url);
}

....

this code works great. I get an Xml as a string back, everyone's happy.

Now, I changed it so it would work with HttpClient instead and I can't get an Xml returned - always a json as a string.

using(var handler = new HttpClientHandler() {Credentials = new NetworkCredentials})
using(var client = new HttpClient(handler))
{
   var request = new HttpRequestMessage(HttpMethod.Get, url);
   request.Headers.Add(HttpRequestHeader.ContentType.ToString(), "text/xml");
   returnedXml = client.SendAsync(request).Result.Content.ReadAsStringAsync().Result;
}   

What am I doing wrong? How can I get the Xml I long for?

Thanks


回答1:


Just Try this one ..

using(var handler = new HttpClientHandler() {Credentials = new NetworkCredentials})
using(var client = new HttpClient(handler))
{
      client.DefaultRequestHeaders
      .Accept
      .Add(new MediaTypeWithQualityHeaderValue("text/xml"));
   var request = new HttpRequestMessage(HttpMethod.Get, url);
    returnedXml = client.SendAsync(request).Result.Content.ReadAsStringAsync().Result;
}  



回答2:


Figured it out!

I should have added a Accept header and its type should be "application/xml".

The working version:

using(var handler = new HttpClientHandler() {Credentials = new NetworkCredentials})
using(var client = new HttpClient(handler))
{
  var request = new HttpRequestMessage(HttpMethod.Get, url);
  request.Headers.Add(HttpRequestHeader.Accept.ToString(), "application/xml");
  returnedXml = client.SendAsync(request).Result.Content.ReadAsStringAsync().Result;
}   


来源:https://stackoverflow.com/questions/31115545/consuming-xml-using-httpclient-from-webapi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!