0

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 (エミュレーターまたはデバイス上) での動作が停止します。インターネットはデバイス/エミュレーターで動作しています。

再現する手順:

. Windows Phone 7.1 アプリを作成 (ファイル -> 新規 -> プロジェクト)

. nuget コマンド: 'install-package microsoft.net.http -pre'

. 上記のコードを MainPage に追加します

どうすればこれを機能させることができますか?

4

1 に答える 1

3

問題を解決するには、次の手順を実行します。

WP7.1 用の Microsoft Async をインストールします。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");
   ...      
}
于 2013-05-09T02:26:53.373 に答える