C# 如何发出http web asyncGET请求
我想提出一个get请求。以下是我测试的代码:C# 如何发出http web asyncGET请求,c#,.net,C#,.net,我想提出一个get请求。以下是我测试的代码: public string Get(string uri) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.De
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();
}
}
公共异步任务GetAsync(字符串uri)
{
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(uri);
request.AutomaticDecompression=DecompressionMethods.GZip
|减压方法:放气;
使用(HttpWebResponse=(HttpWebResponse)wait request.GetResponseAsync())
使用(Stream=response.GetResponseStream())
使用(StreamReader=新StreamReader(stream))
{
return wait reader.ReadToEndAsync();
}
}
但我不擅长多任务处理
有关于如何使用此功能的帮助吗?
tnx我不知道您想做什么,但是您可以尝试删除usings,因为您只需要在imports部分添加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();
}
}
statichttpclient=newhttpclient();
公共异步任务获取(字符串APIRL)
{
HttpResponseMessage response=await client.GetAsync(apiURL);
Stream=response.GetResponseStream();
StreamReader=新的StreamReader(流);
return wait reader.ReadToEndAsync();
}
}
你就快到了。您只需使用wait
调用GetAsync
函数,就可以得到所需的结果
请不要忘记在调用函数的签名中包含async
。您希望使用GetAsync
的地方有GetText
支持,那么代码段应该是:
private async void GetText()
{
string str = await GetAsync(url);
}
tnx我会试试这个,我想对列表框中的URL发出一个get请求,但是因为它们有大量的数据并且需要时间来完成循环,ui不负责,我搜索并发现代码类似于处理另一个威胁(任务),但我不知道如何调用和使用它。我觉得上面的代码看起来不错。函数签名包含了
async
,函数体中包含了2个wait。你有什么问题吗?我看不到任务的范围。在您的情况下,并行。