让Windows Phone和HttpClient PCL正常工作

时间:2013-05-08 23:15:31

标签: windows-phone-7 dotnet-httpclient printer-control-language

我正在尝试在Windows Phone 7.1项目中使用新的HttpClient PCL。该项目使用的是NuGet的Microsoft.Net.Http 2.1.3-beta。

代码:

var client = new HttpClient();
client.BaseAddress = new Uri("http://api.geonames.org/");
var resp = client.GetAsync("earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=bertt").Result;
var earthquakesJson = resp.Content.ReadAsStringAsync().Result;

此代码在Windows窗体应用程序中正常工作。

调试应用程序时,只需停止处理方法HttpClient.GetAsync(在仿真器或设备上)。 Internet正在设备/模拟器上工作。

重现的步骤:

。创建Windows Phone 7.1应用程序(文件 - >新 - >项目)

。 nuget命令:'install-package microsoft.net.http -pre'

。将以上代码添加到MainPage

我怎样才能使这个工作?

1 个答案:

答案 0 :(得分:3)

要解决您的问题,请执行以下操作:

安装Microsoft Async for WP7.1:install-package microsoft.Bcl.Async

将您的代码更改为:

private async void GetData() {
   var client = new HttpClient();

   client.BaseAddress = new Uri("http://api.geonames.org/");
   var earthquakesJson = await client.GetStringAsync("earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=bertt");
   ...      
}