13

Win8アプリをビルドする予定なので、PCL(Portable Class Library)プロジェクトも使用するWindows Phone 8プロジェクトがあります。

ただし、(Azure で) API を呼び出している間、HttpClient の GetStringAsync が非常に遅くなります。datetime を使用していくつかのデバッグを行ったところ、GetStringAsync に 14 秒ほどかかりました。また、場合によってはそれ以上かかることもあります。

私がやっていることは、Azure API サイトから単純な JSON を取得することです。私の Android クライアントは、同じデータを一瞬で取得することに問題はありません

セットアップは非常に簡単です。

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("X-Token", "something");
string responseJSON = await client.GetStringAsync("url");

await の直前と直後にデバッグ時間を配置しました。その間に 14 秒あります。

誰かが理由を知っていますか?

4

2 に答える 2

13

私は同じ問題を抱えていて、この質問を見つけました。私にとっての問題は、HttpClient がプロキシを使用しようとすることですが、ほとんどの人にとってプロキシは存在しません。これが遅くする原因です。初期化を次のように変更すると、速度が大幅に向上することがわかります。

HttpClientHandler hch = new HttpClientHandler();
hch.Proxy = null;
hch.UseProxy = false;

HttpClient client = new HttpClient(hch);
于 2016-07-09T05:20:39.223 に答える
0

GetStringAsync を GetString に置き換えて、実際に async\await が問題の原因であり、スタック内の他のものではないことを確認します。

于 2015-04-24T17:33:20.597 に答える