本文目的:Http请求外部Api接口(接口返回的是二进制流数据类型application/octet-stream),实现下载文件到本地磁盘。
昨天,使用原来的HttpHelper工具类(HttpWebResponse),请求接口下载文件发现返回的是string类型,因为需要的是byte[]类型,然后又把string转为了byte[]后进行下载,发现图片和word等部分格式文件下载后打不开。
后经朋友指教,提供了另外一种方式WebClient,进行下载,默认请求类型是Content-Type: multipart/form-data;。
var url = "http://api.xxxx"; using (var webClient = new WebClient()) { webClient.Headers.Add("Authorization", "xxxx"); var formData = new NameValueCollection(); formData["file_id"] = "xxxxx"; byte[] fileBytes = webClient.UploadValues(url, "POST", formData); System.IO.File.WriteAllBytes(@"D:\tmp\hema.docx", fileBytes); }
如果想多了解Http这三种区别,可看看这篇博文《C#中HttpWebRequest、WebClient、HttpClient的使用》