c# - 如何发出 http web asyncGET 请求
问题描述
我想提出一个获取请求。这是我测试的代码:
public string Get(string uri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.AutomaticDecompression = DecompressionMethods.GZip
| DecompressionMethods.Deflate;
using(HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using(Stream stream = response.GetResponseStream())
using(StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
但问题是它会冻结GUI,我发现了这段代码:
public async Task<string> GetAsync(string uri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.AutomaticDecompression = DecompressionMethods.GZip
| DecompressionMethods.Deflate;
using(HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using(Stream stream = response.GetResponseStream())
using(StreamReader reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}
但我不擅长多任务处理。
任何帮助如何使用这个功能?tnx
解决方案
我不知道你想做什么,但你可以尝试删除 usings,因为你只需要在导入部分添加 usings 并尝试使用你的方法更像这样:
公共类 HttpHandler {
static HttpClient client = new HttpClient();
public async Task<string> Get(string apiURL)
{
HttpResponseMessage response = await client.GetAsync(apiURL);
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
return await reader.ReadToEndAsync();
}
}
推荐阅读
- r - R:有效地读取文件并加入它们
- jquery - checkmarx 客户端潜在的 XSS 修复
- swift - 如何将 JSON 数据保存到我的本地主机中?http post响应说“200”
- python - 在 Python 数据类中使用描述符作为字段的正确方法是什么?
- amazon-web-services - 如何在 Terraform 中使用 AWS Backup 在不同区域创建文件库?
- symfony - 作曲家安装/更新触发器类 Doctrine\Common\Cache\ArrayCache 不存在
- angular - 将`Encrypted`文件上传到Azure容器并在另一端`Decrypt` - 使用Angular
- javascript - 删除重复行、工作表和谷歌脚本的功能
- blazor - Childcomponent 到另一个 ChildComponent 的 EventCallback,:Blazor
- php - 如何从 JSON 中检索值