Windows.Web.Http.HttpClient.ReadAsStringAsync()导致COMException HRESULT E_FAIL

时间:2016-12-11 13:18:07

标签: c# php uwp httpclient

我有以下C#代码:

Uri url = new Uri("http://lu32kap.typo3.lrz.de/mensaapp/exportDB.php?mensa_id=all");

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.UserAgent.TryParseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
var content = response.Content;
if(content != null)
{
     string result = await content.ReadAsStringAsync();
      if (result != null)
      {
           tblock.Text = result;
      }
}

每次运行时,我都会得到 COMException" HRESULT E_FAIL" 。 我能够部分跟踪它。这是由我尝试获取数据的网站造成的,因为如果我将其更改为" https://www.google.de/"它有效。

它在崩溃:

string result = await content.ReadAsStringAsync();

然而,我需要让它与这个网站一起工作,因为它返回了一个用PHP生成的json对象。 有办法解决这个问题吗?

The image behind this link shows the crash in VS2015

2 个答案:

答案 0 :(得分:0)

我在本地运行此代码,最终得到此异常

  

ContentType中提供的字符集无效。无法阅读   使用无效字符集将内容作为字符串。

它似乎正在返回UTF8

  

'utf8'不是受支持的编码名称。有关定义的信息   自定义编码,请参阅文档   Encoding.RegisterProvider方法。

您能确保服务器上的输出格式正确吗?也许尝试这个答案: Parsing UTF8 JSON response from server

答案 1 :(得分:0)

解决方案: 这是UTF8编码的问题。我能够建立一个小的解决方法。 感谢Glitch100!

datepart()