Windows phone 8 HttpClient和windows phone 8便携式

Windows phone 8 HttpClient和windows phone 8便携式,windows-phone-8,portable-class-library,restsharp,dotnet-httpclient,xamarin.forms,Windows Phone 8,Portable Class Library,Restsharp,Dotnet Httpclient,Xamarin.forms,我有一个很奇怪的问题。我正在尝试做一个使用可移植库的WP8.0应用程序。在这个便携库中,我使用的是restsharp portable,在我开始写文章之前,一切都很好。更深入地讲,我发现问题出在HttpClient中,因此我只对HttpClient编写了一个简单的代码,并发现在以下场景中使用相同的代码,结果会有所不同: *在WP8+portable GET不工作时,调用不会返回,但POST工作正常 *在WP81中可以吗 我正在做得到的www.google.com和帖子到我自己的服务器。我正在使用

我有一个很奇怪的问题。我正在尝试做一个使用可移植库的WP8.0应用程序。在这个便携库中,我使用的是restsharp portable,在我开始写文章之前,一切都很好。更深入地讲,我发现问题出在HttpClient中,因此我只对HttpClient编写了一个简单的代码,并发现在以下场景中使用相同的代码,结果会有所不同: *在WP8+portable GET不工作时,调用不会返回,但POST工作正常 *在WP81中可以吗

我正在做得到的www.google.com和帖子到我自己的服务器。我正在使用WP8.1模拟器进行测试

有什么想法吗?

发现了问题

我用来测试的代码是:

  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。我不知道为什么,但如果我改成 等待client.GetAsync(“”)


在我的应用程序中,我有wait的代码,但顶级方法不是异步的,我使用.Result。解决方案是在调用异步方法时不使用.Result(我不知道它是否适用于所有方法,还是仅适用于HttpClient方法)。这篇文章很好,因为它们是异步方法。

你能澄清你的问题吗?您还可以在此发布一些可能有帮助的代码示例吗?使用.Result会阻塞UI线程,因此,如果有人试图在处理HTTP响应时使用UI线程,您将遇到死锁。另外,不要在每个请求上都创建一个新的HttpClient,将其视为一个服务,当您不再需要进行Http请求时将其拆下。