一个很简单的需求,关键代码如下:
private string GetHtml(string item) { // set remote certificate Validation auto pass ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(remoteCertificateValidate); ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; string webSite = item; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(webSite); req.KeepAlive = false; req.ProtocolVersion = HttpVersion.Version11; //req.AllowAutoRedirect = false; // 不允许自动重定向 req.Method = "GET"; req.Timeout = 15 * 1000; // 传入是秒,需要转换成毫秒 req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"; req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"; HttpWebResponse rsp = null; try { rsp = (HttpWebResponse)req.GetResponse(); if (HttpStatusCode.OK == rsp.StatusCode) { Stream rspStream = rsp.GetResponseStream(); // 响应内容字节流 using (StreamReader sr = new StreamReader(rspStream,Encoding.UTF8)) { return sr.ReadToEnd(); } } } finally { rsp.Close(); } return null; }
private static bool remoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { return true; }