是否有一种方法可以发送HttpWebRequest来下载所有url并处理所有异常?
本文关键字:下载 HttpWebRequest url 异常 处理 一种 方法 是否 | 更新日期: 2023-09-27 18:17:44
我正在研究Http上的MultiThreadingDownloader
。所以我必须使用HttpWebRequest
来获得部分请求。该应用程序对几乎所有url都运行良好。但有时,当试图得到响应时,它抛出异常或工作错误(例如 ContentLength
返回-1, TSL/SSL安全异常, cookie要求的链接)
我对客户端-服务器关系的了解不够,所以我不能处理所有的异常。
我正在使用这个方法:
public static HttpWebRequest SendRequest(string url)
{
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
req.AllowAutoRedirect = true;
req.Accept = "*/*";
req.Method = "GET";
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
req.ServicePoint.ConnectionLimit = 8;
req.ServicePoint.Expect100Continue = true;
req.ProtocolVersion = HttpVersion.Version10;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
return req;
}
HttpWebRequest
应该包含什么才能成功获得所有URL源的HttpWebResponse
?正如我所说,我的方法并不适用于所有人。详细的文档或代码块的方法可以帮助我。
服务器可以自由选择不提供内容长度。这对于流数据很有用。在这里,你对此无能为力。对于这样的url,您不能支持分段下载。除了尝试,没有其他方法可以发现这种情况。
这与HTTPS和cookie是一样的。服务器可以自由地回复它想要的任何东西,并要求它喜欢的任何输入。
你需要特别处理所有这些情况。它们是HTTP协议所允许的。HttpWebRequest
没有太多内置的帮助。在这方面唯一有用的功能是以下重定向和解压缩。这是默认的,所以你可能没有注意到它的存在