使用 HttpWebRequest 下载没有关键敏感问题的网页
4 回答
[更新:我不知道为什么,但是下面的两个示例现在都可以正常工作!最初我在 page2 示例上也看到了 403。也许是服务器问题?]
首先,WebClient
更容易。其实,我以前见过这个。访问维基百科时,url 中的大小写敏感;尝试确保您在对维基百科的请求中使用了相同的案例。
[更新] 正如 Bruno Conde 和 gimel 所观察到的,使用 %27 应该有助于使其保持一致(间歇性行为表明可能某些维基百科服务器的配置与其他服务器不同)
我刚刚检查过,在这种情况下,案例问题似乎不是问题......但是,如果它有效(它没有),这将是请求页面的最简单方法:
using (WebClient wc = new WebClient())
{
string page1 = wc.DownloadString("http://en.wikipedia.org/wiki/Algeria");
string page2 = wc.DownloadString("http://en.wikipedia.org/wiki/%27Abadilah");
}
恐怕我想不出对破坏事物的领先撇号该怎么办......
我确定 OP 现在已经对此进行了排序,但我刚刚遇到了同样的问题 - 通过网络客户端从维基百科下载时出现间歇性 403。设置用户代理标头可以对其进行排序:
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
我也得到了奇怪的结果......首先,
没有工作,经过一些失败的尝试后它开始工作。
第二个网址,
http://en.wikipedia.org/wiki/ 't_Zand_(Alphen-Chaam)
对我来说总是失败...
撇号似乎是造成这些问题的原因。如果您将其替换为
%27
所有网址都可以正常工作。
尝试使用百分比编码(第 2.1 段)转义特殊字符。例如,单引号%27
在 URL ( IRI ) 中表示为。