当我在Firefox / IE中执行查询时,我得到了完整的响应;但当我用HttpClient
执行相同的请求时,我只得到了一部分。我不明白为什么。
显然数据被分块,这就是我指定ResponseContentRead
的原因。
var requestUri = "https://api.guildwars2.com/v2/continents/1/floors/1";
HttpClient httpClient = new HttpClient();
var request = new HttpRequestMessage();
request.Method = HttpMethod.Get;
request.RequestUri = requestUri;
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseContentRead);
var result = await response.Content.ReadAsStringAsync();
为什么Firefox / IE会返回正确的响应,而HttpClient
会返回不完整的响应?
来自HttpClient
的结果:
来自Firefox / IE的结果:
代码位于C#UWP应用程序中。
答案 0 :(得分:1)
我已成功运行您的代码并获得了整个json字符串。但是,我必须进行一些小修改才能使其正常工作:
var requestUri = new Uri("https://api.guildwars2.com/v2/continents/1/floors/1");
HttpClient httpClient = new HttpClient();
var request = new HttpRequestMessage();
request.Method = HttpMethod.Get;
request.RequestUri = requestUri;
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseContentRead);
var result = await response.Content.ReadAsStringAsync();
注意requestUri
被初始化为Uri实例而不是字符串实例。
此外,代码已在控制台应用程序中进行了测试。
编辑:这是我从通话中获得的一个粘贴。我已经美化了代码,使其更具可读性。也许它可以帮助您验证内容是否符合预期:Json result