下载XML并使用ReadAsAsync解析它

时间:2014-09-17 07:51:28

标签: c# xml-deserialization dotnet-httpclient

我正在尝试下载XML文档并使用以下代码解析它:

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri(@"https://domain.com/");
    client.DefaultRequestHeaders.Accept.Add(
        new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(
            "application/x-www-form-urlencoded"));

    var values = new List<KeyValuePair<string, string>>
    {
        new KeyValuePair<string, string>("key1", "value1"),
    };

    HttpResponseMessage response = await client.PostAsync(
        @"/", new FormUrlEncodedContent(values));

    var result = await response.Content.ReadAsAsync<SomeClass>();
}

ReadAsAsync方法引发异常:

  

声明'windows-1251'中的编码没有   匹配文档'utf-8'的编码。

传递XML格式选项,如下所示

var xml_formatter = new XmlMediaTypeFormatter();

xml_formatter.SupportedEncodings.Add(
    Encoding.GetEncoding("windows-1251"));

var result = await response.Content.ReadAsAsync<SomeClass>(
    new[] { xml_formatter });

引发了另一个例外:

  

不支持XML编码。

内容和XML文档的编码是windows-1251。 这是ReadAsAsync方法的错误或限制吗?

0 个答案:

没有答案