上网查了很多也没找到正确答案!
大家帮我看看!其中,url是维基百科的一个网页! /// <summary>
/// 获得页面的html代码
/// </summary>
/// <param name="url">页面地址</param>
public string getHtml(string url)
{
string html = "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //错误出在这里,远程服务器返回错误: (403) 已禁止。
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.Default);
html = reader.ReadToEnd().Replace("\r\n", "");
response.Close();
return html;
}
大家帮我看看!其中,url是维基百科的一个网页! /// <summary>
/// 获得页面的html代码
/// </summary>
/// <param name="url">页面地址</param>
public string getHtml(string url)
{
string html = "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //错误出在这里,远程服务器返回错误: (403) 已禁止。
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.Default);
html = reader.ReadToEnd().Replace("\r\n", "");
response.Close();
return html;
}
PS:你的Stream、StreamReader忘了关了,也许在以后会导致莫名其妙的错误。
建议Response、Stream、StreamReader都使用using关键字。
不带request头,服务器就知道你是程序了,加上头把这个request模拟成浏览器,就可以正常访问了。
你如果用FF,就装个HTTPFox,如果用IE,就装个HttpAnalyzer,分析一下使用浏览器访问这个页面时request带的信息,然后在Create和GetResponse之间把这些信息添加到request上,再去访问应该就不会有问题了。
这个昨天访问有问题,今天很正常!其他的都有问题,比如这个:
string url = "http://zh.wikipedia.org/w/index.php?title=Category:%E6%94%B6%E8%97%8F&variant=zh-cn";很困惑!照道理说,如果ip被禁掉的话,这个网站的所有页面都打不开才对,但是现在有的可以,有的不可以!