运行环境:
vs2019 .net4.5
请求一个网站,浏览器可以访问,可是我用HttpWebRequest取构造一样的参数,始终是超时,附件是测试代码,请各位帮我看看
class Program
{
static void Main(string[] args)
{
ServicePointManager.DefaultConnectionLimit = 200;
ServicePointManager.ServerCertificateValidationCallback += (sender, certifice, chain, sslerror) => {
return true;
};
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
HttpGet("https://www.arrow.com");
}
static void HttpGet(string url)
{
string html;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "GET";
request.Timeout = 40 * 1000;
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36";
request.Host = "www.arrow.com";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9";
request.Headers.Add("accept-encoding", "gzip, deflate, br");
request.Headers.Add("accept-language", "zh-CN,zh;q=0.9");
//request.Headers.Add(":authority", "www.arrow.com");
//request.Headers.Add(":method", "GET");
//request.Headers.Add(":path", "/");
//request.Headers.Add(":scheme", "https");
request.Headers.Add("cache-control", "no-cache");
request.Headers.Add("pragma", "no-cache");
request.Headers.Add("sec-ch-ua", "\"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\"");
request.Headers.Add("sec-ch-ua-mobile", "?0");
request.Headers.Add("sec-ch-ua-platform", "\"Windows\"");
request.Headers.Add("upgrade-insecure-requests", "1");
request.Headers.Add("sec-fetch-site", "none");
request.Headers.Add("sec-fetch-mode", "navigate");
request.Headers.Add("sec-fetch-user", "?1");
request.Headers.Add("sec-fetch-dest", "document");
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
var statusCode = response.StatusCode;
html = response.StatusDescription;
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
html = sr.ReadToEnd();
Console.WriteLine(html);
}
}
}
catch (WebException hex)
{
Console.WriteLine(hex.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}