0

我有一个非常奇怪的问题。我试图做一个使用可移植库的 WP8.0 应用程序。在这个便携式库中,我使用的是 restsharp 便携式并且一切都很好,直到我开始做 GET 而不是 POST。再深入一点,发现问题出在HttpClient,于是我只用HttpClient做了一个简单的代码,发现在以下场景使用相同的代码结果会有所不同: * 在WP8+portable GET不工作,调用不'不返回但 POST 工作正常 * 在 WP81 OK

我正在对 www.google.com 进行 GET,对我自己的服务器进行 POST。我正在使用 WP8.1 模拟器进行测试。

任何想法?

4

1 回答 1

0

发现问题了!

我用来测试的代码是这样的:

  using (var client = new HttpClient())
  {
       client.BaseAddress = new Uri("http://www.google.es/");
       client.DefaultRequestHeaders.Clear();
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
       HttpResponseMessage response = client.GetAsync("").Result;
       if (response.IsSuccessStatusCode)
       {
         text = response.Content.ReadAsStringAsync().Result;
       }
  }

问题是在 GetAsync 中使用 Result。我不知道为什么,但是如果我更改为 await client.GetAsync(""); 效果很好

在我的应用程序中,我有等待但顶级方法不是异步的代码,我使用.Result。解决方案是在调用异步方法时不使用 .Result (我不知道它是适用于每个方法还是仅适用于 HttpClient 方法)。POST 工作正常,因为它们采用异步方法。

于 2014-07-28T21:16:10.383 回答