c# - 为什么 HttpClient.GetAsync() 缺少部分内容?
问题描述
Windows.Web.Http.HttpClient
并System.Net.Http.HttpClient
收到不同的回应。
protected override void OnLaunched(LaunchActivatedEventArgs e) {
var client = new Windows.Web.Http.HttpClient();
var taskHttpResponse = client.GetAsync(new Uri(@"https://apis.live.net/v5.0/me?access_token=abcdefg"));
Debug.WriteLine(taskHttpResponse.AsTask().Result.Content.ReadAsStringAsync().AsTask().Result);
}
{ "error": { "code": "request_token_invalid", "message": "The access token isn't valid." } }
private static void Main() {
var client = new System.Net.Http.HttpClient();
var taskHttpResponse = client.GetAsync(new Uri(@"https://apis.live.net/v5.0/me?access_token=abcdefg"));
Console.WriteLine(taskHttpResponse.Result.Content.ReadAsStringAsync().Result);
}
} } "message": "The access token isn't valid."
你在跟我开玩笑吗?
解决方案
您不应该使用ReadAsStringAsync().Result
该 make 可能导致 UI 中的死锁参见https://walterlv.github.io/post/deadlock-in-task-wait.html
我将您的代码更改为await
可以得到结果。
而且我发现您的代码没有未经授权,我使用GetStringAsync
的将是异常 401。我认为这个 api 不能在没有身份验证的情况下使用。
推荐阅读
- python-sphinx - 有没有办法在 Sphinx 中使用由 Doxygen 生成的点文件?
- kubernetes - 如何在 Datadog 上为 Kubernetes 创建 ImagePullBackOff 警报及其恢复警报?
- python - 当输入为 10.1 时,它显示错误,但为什么?我认为它应该将其转换为整数?
- c# - EF Core 能否按非选定列排序(EF Core Net 5)
- next.js - 如何在 hexo 博客的同一行中设置两个图像?
- c++ - 如何确定 std::filesystem::remove_all 是否失败?
- javascript - Firebase 云消息传递通知在某些设备上没有声音
- c - Hackerrank 问题(转换后) (C) 导致此段错误的原因是什么?
- react-native - 更改科尔多瓦应用程序状态栏上的背景颜色
- timezone - 使用用户本地时间的 iCAL 属性是什么?