【问题标题】:Use WebClient instead of HttpClient使用 WebClient 而不是 HttpClient
【发布时间】: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,请阅读 tourHow to Ask 看看在这里问什么样的问题。
  • 哦,抱歉,我已经添加了我正在做的事情的示例。或者想做。
  • @D-johnAnshani 请查看Async/Await - Best Practices in Asynchronous Programming。建议某人使用async void 是一个非常糟糕的主意。
  • @D-johnAnshani 接受的答案很糟糕。请查看我提供给您的链接。

标签: c# model-view-controller httpclient webclient


【解决方案1】:

你不能使用 httpclient,因为你缺少 nugget 包

https://www.nuget.org/packages/Microsoft.Net.Http/

【讨论】:

  • 我不能在另一个项目中使用 http 客户端,因为它是 4.0 版,并且将其更改为 4.5 版是一个更长的过程。
  • 什么阻止你下载金块?下载 4,0 版本的金块而不升级。
  • 我这样做了,但它给了我一个版本冲突的错误
  • 从 4.0 项目的引用中删除 System.net.http 并添加 nuget。在你的代码中确保你有这个“使用 System.Net.Http”
  • 也这样做了。也不行。我的学长发现的唯一解决方案是使用 WebClient。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多