13

我有一个 Windows Phone 8 项目,我也开始使用 PCL(可移植类库)项目,因为我要构建一个 Win8 应用程序。

但是,在调用我的 api(在 Azure 中)时,我的 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 回答