下载文件-请求别人的接口,下载文件并保存
public static string DownFileByHttpRes(string url, Dictionary<string, string> paras,string path)
{
try
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls
| (SecurityProtocolType)0x300 //Tls11
| (SecurityProtocolType)0xC00 //Tls12
| (SecurityProtocolType)3072;
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Accept = "*/*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)";
Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
string responseData = String.Empty;
if (Regex.IsMatch(url, "^https://"))
{
request.KeepAlive = false;
ServicePointManager.Expect100Continue = true;
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls
| (SecurityProtocolType)0x300 //Tls11
| (SecurityProtocolType)0xC00 //Tls12
| (SecurityProtocolType)3072;
request.ProtocolVersion = HttpVersion.Version10;
}
//如果报文体不为空
if (paras != null)
{
string postData = Newtonsoft.Json.JsonConvert.SerializeObject(paras);
var data = Encoding.UTF8.GetBytes(postData);
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
string filename = HttpUtility.UrlDecode(response.GetResponseHeader("Content-Disposition").Split(';')[1].Split('=')[1], System.Text.Encoding.UTF8);
string filePath = path + "\\" + filename;
if (File.Exists(filePath))
{
File.Delete(filePath);
}
FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
//直到request.GetResponse()程序才开始向目标网页发送Post请求
Stream responseStream = response.GetResponseStream();
//创建本地文件写入流
byte[] bArr = new byte[1024];
int iTotalSize = 0;
int size = responseStream.Read(bArr, 0, (int)bArr.Length);
while (size > 0)
{
iTotalSize += size;
fs.Write(bArr, 0, size);
size = responseStream.Read(bArr, 0, (int)bArr.Length);
}
fs.Close();
responseStream.Close();
return filePath;
}
catch (Exception)
{
throw;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?