HttpWebRequest を使用して、機密性の高い重要な問題なしに Web ページをダウンロードする
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");
}
残念ながら、物事を壊している先頭のアポストロフィについてどうすればよいか考えられません...
私も奇妙な結果を得ました...まず、
動作しませんでした、そして、いくつかの失敗した試みの後、それは動作し始めました。
2番目のURL、
いつも私のために失敗しました...
アポストロフィがこれらの問題の原因であるようです。に置き換えると
%27
すべてのURLは正常に機能します。
パーセントエンコーディング(2.1項)を使用して特殊文字をエスケープしてみてください。たとえば、一重引用符は%27
URL(IRI)で表されます。
OPがこれをソートしたと確信していますが、同じ種類の問題に遭遇しました-Webクライアントを介してウィキペディアからダウンロードするときに断続的な403です。ユーザー エージェント ヘッダーを設定すると、次のようになります。
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");