是否有一种方法可以发送HttpWebRequest来下载所有url并处理所有异常?

本文关键字:下载 HttpWebRequest url 异常 处理 一种 方法 是否 | 更新日期: 2023-09-27 18:17:44

我正在研究Http上的MultiThreadingDownloader。所以我必须使用HttpWebRequest来获得部分请求。该应用程序对几乎所有url都运行良好。但有时,当试图得到响应时,它抛出异常或工作错误(例如 ContentLength返回-1TSL/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 ?正如我所说,我的方法并不适用于所有人。详细的文档或代码块的方法可以帮助我。

是否有一种方法可以发送HttpWebRequest来下载所有url并处理所有异常?

服务器可以自由选择不提供内容长度。这对于流数据很有用。在这里,你对此无能为力。对于这样的url,您不能支持分段下载。除了尝试,没有其他方法可以发现这种情况。

这与HTTPS和cookie是一样的。服务器可以自由地回复它想要的任何东西,并要求它喜欢的任何输入。

你需要特别处理所有这些情况。它们是HTTP协议所允许的。HttpWebRequest没有太多内置的帮助。在这方面唯一有用的功能是以下重定向和解压缩。这是默认的,所以你可能没有注意到它的存在