我正在通过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
应包含哪些内容才能成功获取所有网址来源的HttpWebResponse
?正如我所说,我的方法并不适用于所有人。该方法的详细文档或代码块可以帮助我。
答案 0 :(得分:1)
服务器可以不提供内容长度。这对于流数据很有用。在这里,你无法做很多事情。您无法支持此类网址的分段下载。除了尝试之外,没有办法发现这种情况。
HTTPS和cookie也是如此。服务器可以随意回复它想要的任何内容,并且需要任何它喜欢的输入。
您需要特别处理所有这些情况。 HTTP协议允许它们。 HttpWebRequest
没有太多内置功能可以帮助您。这方面唯一有用的功能是重定向和解压缩。这是默认开启的,所以你可能甚至没有注意到它就在那里。