[英]How to make a http web asyncGET request
我想提出一个获取请求。 这是我测试的代码:
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
我不知道你想做什么,但你可以尝试删除 using,因为你只需要在导入部分添加 using 并尝试更像这样使用你的方法:
公共类 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();
}
}
你快到了。 您需要做的就是使用await
调用GetAsync
函数,您将获得所需的结果。
请不要忘记在调用函数的签名中包含async
。 支持您从要使用GetAsync
地方获得GetText
,然后代码片段将是:
private async void GetText()
{
string str = await GetAsync(url);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.