首页 > 解决方案 > 如何发出 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

标签: c#.net

解决方案


我不知道你想做什么,但你可以尝试删除 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();
        }

    }

推荐阅读