c# - 为什么 HttpClient 的 GetStringAsync 慢得令人难以置信?

标签 c# windows-phone-8 async-await portable-class-library

我有一个 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");

我在等待之前和之后放置了调试时间,中间是 14 秒!

有人知道为什么吗?

最佳答案

我遇到了同样的问题,找到了这个问题。我的问题是 HttpClient 尝试使用代理,但对于大多数人来说代理不存在。这就是让它变慢的原因。将初始化更改为以下内容,您会发现速度明显加快。

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

HttpClient client = new HttpClient(hch);

关于c# - 为什么 HttpClient 的 GetStringAsync 慢得令人难以置信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19883524/

相关文章:

c# - 数据绑定(bind)到 List - 查看 ListBox、ComboBox 中数据源的变化

c# - 业务对象或实体是否应该 self 验证?

macos - 是否可以直接在 OS X 中运行 Windows Phone 8 模拟器?

c# - 异步/等待套接字连接中的竞争条件

javascript - 意外的等待/异步行为

c# - 在 Roslyn 中,如何从 SymbolFinder.FindCallersAsync 获取文档信息?

c# - 如何更改 Windows Phone 应用程序栏的颜色?

c# - 解决播放WAV文件时出现问题

.net - 使用 Async V3 而不安装它

C#判断Excel中选中对象的类型