场景
Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124157296
在上面使用HttpClient调用get以及post接口的基础上,如何在请求接口时添加请求头,
比如接口需要鉴权,获取token之后在其他接口请求时需要添加请求头为获取的token。
以及如果get接口响应为文件流(application/octet-stream),如何请求下载并保存到磁盘具体文件。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
实现
1、请求添加请求头headers
这里将httpClient声明为全局单例的。
Global.Instance.httpClient.DefaultRequestHeaders.Clear(); Global.Instance.httpClient.DefaultRequestHeaders.Add("Authorization", "Basic ttttttfgdfgdfgfdgdf");
所以这里的Global.Instance.httpClient即是httpClient。
添加之前先将之前的进行清理。
2、请求下载文件
接口为get请求,需要传递参数以及添加请求头
string urlString = textBox_address.Text.Trim() + downloanUrl+ "?allIn=true&dnType=1&version="+versionString; Global.Instance.httpClient.DefaultRequestHeaders.Clear(); Global.Instance.httpClient.DefaultRequestHeaders.Add("Authorization", tokenString); Global.Instance.httpClient.DefaultRequestHeaders.Add("Blade-Auth", "bearer " + tokenString); DownloadFile(urlString);
这里添加参数直接在url中添加,并且添加了两个请求头。
然后调用下载的方法,方法实现
/// <summary> /// 下载文件并保存到指定目录 /// </summary> /// <param name="url">文件下载地址</param> /// <param name="directoryName">文件下载目录</param> /// <param name="fileName">不包括扩展名</param> /// <returns>下载是否成功</returns> public async Task<bool> DownloadFile(string url) { bool sign = true; try { HttpResponseMessage response = await Global.Instance.httpClient.GetAsync(url); using (Stream stream = await response.Content.ReadAsStreamAsync()) { using (FileStream fileStream = new FileStream("D:\\test.zip", FileMode.CreateNew)) { byte[] buffer = new byte[1000]; int readLength = 0; int length; while ((length = await stream.ReadAsync(buffer, 0, buffer.Length)) != 0) { readLength += length; // 写入到文件 fileStream.Write(buffer, 0, length); } } } textBox_log.AppendText("\r\n"); textBox_log.AppendText("下载成功"); } catch (IOException exception) { sign = false; textBox_log.AppendText("\r\n"); textBox_log.AppendText("下载失败:"+ exception.Message); } return sign; }
这里不考虑动态传递保存文件路径等参数,以及不考虑异步任务以及进度条显示以及文件过大等情况,
只是简单实现。
标签:文件,请求,Global,Instance,添加,Caharp,Winform,httpClient From: https://www.cnblogs.com/badaoliumangqizhi/p/17289353.html