错误异常>开发语言>C#
使用HttpWebRequest采集一个网站的信息,需要设置Referer,直接使用request.Headers.Add(name,value)的方法报错:
System.ArgumentException:“必须使用适当的属性或方法修改“Referer”标头。
Parameter name: name”
public static string FetchHtml(string url, Encoding en) { if (en == null) en = Encoding.UTF8; String html; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Timeout = 600000 ; request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0"; request.Headers.Add("Referer", "https://www.baidu.com"); WebResponse response = request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream, en); String responseFromServer = reader.ReadToEnd(); html = responseFromServer; Encoding en2 = GetEncoding(response.ContentType);//responseFromServer reader.Close(); response.Close(); //if (en2.EncodingName != en.EncodingName) //{ // Stream htmlStream = WebRequest.Create(url).GetResponse().GetResponseStream(); // StreamReader htmlReader = new StreamReader(htmlStream, en2); // html = htmlReader.ReadToEnd(); //} //彻底过滤 \r \n Regex regex = new Regex(@"\r\n", RegexOptions.IgnoreCase); html = regex.Replace(html, ""); regex = new Regex(@"\t", RegexOptions.IgnoreCase); html = regex.Replace(html, ""); &nbs
使用修改属性的方法直接修改就可以:
request.Referer="https://www.baidu.com";
其他类似属性还有:
Header | 设置方 |
Accept | 由 Accept 属性设置。 |
Connection | 由 Connection 属性和 KeepAlive 属性设置。 |
Content-Length | 由 ContentLength 属性设置。 |
Content-Type | 由 ContentType 属性设置。 |
Expect | 由 Expect 属性设置。 |
Date | 由 Date 属性设置。 |
宿主 | 由 Host 属性设置。 |
If-Modified-Since | 由 IfModifiedSince 属性设置。 |
范围 | 由 AddRange 方法设置。 |
Referer | 由 Referer 属性设置。 |
Transfer-Encoding | 由 TransferEncoding 属性设置(SendChunked 属性必须为 true)。 |
User-Agent | 由 UserAgent 属性设置。 |