【问题标题】:Consuming xml using HttpClient from webapi使用 webapi 中的 HttpClient 使用 xml
【发布时间】:2015-06-29 12:19:30
【问题描述】:

我使用 WebClient 从 restfull 服务 (.net web api) 获取 Xml 对象,一切正常:

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

....

这段代码很好用。我得到一个 Xml 作为字符串返回,每个人都很高兴。

现在,我对其进行了更改,以便它可以与 HttpClient 一起使用,但我无法返回 Xml - 始终将 json 作为字符串。

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;
}   

我做错了什么?如何获得我渴望的 Xml?

谢谢

【问题讨论】:

    标签: .net asp.net-web-api dotnet-httpclient


    【解决方案1】:

    试试这个..

    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】:

      想通了!

      我应该添加一个 Accept 标头,它的类型应该是“application/xml”。

      工作版本:

      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;
      }   
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-14
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 2019-10-28
        • 2020-07-10
        • 1970-01-01
        相关资源
        最近更新 更多