【发布时间】:2018-07-03 18:00:17
【问题描述】:
我有两个版本为 4.0 和 4.5 的项目,我想对它们都使用以下功能,但不幸的是,HttpClient 仅适用于 4.5
public async Task<SlackTest> GetAccessToken(string clientId, string clientSecret, string code)
{
using (var client = new HttpClient())
{
string url = ApiUrl + "/oauth.access?client_id=" + clientId + "&client_secret=" + clientSecret + "&code=" + code;
HttpResponseMessage response = await client.GetAsync(url);
string content = await response.Content.ReadAsStringAsync();
SlackTest slackTest = JsonConvert.DeserializeObject<SlackTest>(content);
string accessToken = slackTest.AccessToken;
string urlUserIdentity = "https://slack.com/api/users.identity?token=" + accessToken;
var responseUser = await client.GetAsync(urlUserIdentity);
string contentUserIdentity = await responseUser.Content.ReadAsStringAsync();
SlackTest2 slack = JsonConvert.DeserializeObject<SlackTest2>(contentUserIdentity); System.IO.File.WriteAllText(@"C:\Users\Srishti\Desktop\AccessTokenSlack.txt", accessToken);
return slackTest;
}
}
所以现在我需要使用我从未使用过的 WebClient 来做同样的事情。有人可以帮我解决这个问题,并且可能会在如何解决这个问题上提供一个先机。
我开始如下:
string url = ApiUrl + "/oauth.access?client_id=" + clientId + "&client_secret=" + clientSecret + "&code=" + code;
var response = await client.DownloadDataAsync(url);
但智能感知并没有让我选择使用 DownloadDataTaskAsync。 我们不能将 webclient 与 Tasks 和 awaits 一起使用吗?
【问题讨论】:
-
您希望有人为您编写代码吗?在 Stack Overflow 上这不是一件好事。如果您不知道自己在做什么,这听起来更像是您想聘请承包商。如果你想在这里提出一个有效的问题,那么尝试做你想做的事情,如果它不起作用,只在此处发布,确保提供minimal reproducible example。
-
对于示例代码,CodeProject 可能会有所帮助,或者谷歌搜索。对于 SO,请阅读 tour 和 How to Ask 看看在这里问什么样的问题。
-
哦,抱歉,我已经添加了我正在做的事情的示例。或者想做。
-
@D-johnAnshani 请查看Async/Await - Best Practices in Asynchronous Programming。建议某人使用
async void是一个非常糟糕的主意。 -
@D-johnAnshani 接受的答案很糟糕。请查看我提供给您的链接。
标签: c# model-view-controller httpclient webclient