ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
##更新 2022.03.23 NET6修改为HttpClient为底层方法 ## 原生 HttpClient 微软自带的HttpClient更适用于异步单进程场景. NetCore 2.1 推出的IHttpClientFactory虽然解决了并发的问题,但只在Windows下使用正常,在Linux环境下多并发依旧会导致进程堵塞. ## IHttp ~~使用 HttpWebRequest / HttpWebResponse 底层封装实现, 性能高运行稳定方便使用.~~ ## 请求三方网站 GET 请求 ``` public IActionResult TestRequest() { //注意client 使用完成后需要 Dispose, 所以推荐使用using using var httpClient = IHttp.Instance.CreateRequest("http://www.baidu.com"); var result = httpClient.Get(); return new StringActionResult { Code = "0000", Data = result.GetResult() }; } ``` POST 请求 ``` public IActionResult TestRequest() { using var httpClient = IHttp.Instance.CreateRequest("http://www.baidu.com"); httpClient.AddHeaders("Referer", "https://www.baidu.com/"); httpClient.AddHeaders("Content-Type", "application/x-www-form-urlencoded"); httpClient.SetCookies("cookies"); var resp = httpClient.Post("a=1&b=2"); var cookies = resp.GetCookies(); //新增 Result 属性写法 同 resp.GetResult() return new StringActionResult { Code = "0000", Data = resp.Result }; } ``` ## 下载文件 ``` public IActionResult TestDownloadFile() { var downloadUrl = "http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4"; using var request = IHttp.Instance.CreateRequest(downloadUrl); var response = request.Get(); var savePath = Path.Combine(Environment.CurrentDirectory, "download"); var filePath = Path.Combine(savePath, "test.mp4"); var result = response.DownloadFile(filePath, 0); return new DefaultActionResult { Code = "0000", Data = result }; } ```