2009-03-31 5 views
7

次のコードは400の不正なリクエスト例外で失敗します。私のネットワーク接続は良いですし、私はサイトに行くことができますが、私はHttpWebRequestでこのURIを取得することはできません。なぜ私のHttpWebRequestは400の不正なリクエストを返しますか?

private void button3_Click(object sender, EventArgs e) 
{ 
    WebRequest req = HttpWebRequest.Create(@"http://www.youtube.com/"); 
    try 
    { 
     //returns a 400 bad request... Any ideas??? 
     WebResponse response = req.GetResponse(); 
    } 
    catch (WebException ex) 
    { 
     Log(ex.Message);     
    } 
} 
+0

asp.netまたはwindowsフォームですか? – eglasius

答えて

13

まず、このようにHttpWebRequestのにWebRequestクラスをキャスト:あなたのHttpWebRequestの

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
+0

これはチャンピオンのように機能します! – user74373

3

プロキシサーバーが動作していて、HttpWebRequestのプロキシプロパティを設定していない可能性がありますか?

+0

良い推測です。これは私が書いているプロキシの内部です。 – user74373

4

この問題には多くの原因が考えられます。 WebExceptionについての詳細はありますか?

私が以前に実行した1つの原因は、悪いユーザーエージェント文字列があることです。いくつかのウェブサイト(例えば、Google)は、自動ボットが自分のページに当たるのを防ぐために、知られているユーザーエージェントからのリクエストをチェックします。

実際には、YouTubeの利用規約があなたのやることを妨げないことを確認したい場合があります。そうであれば、Webサービスなどの承認されたチャネルを経由することで、あなたがやっていることがよりうまく達成されるかもしれません。

5

設定のUserAgentリファラー

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(@"http://www.youtube.com/"); 

次に、このコード行を追加します:

var request = (HttpWebRequest)WebRequest.Create(@"http://www.youtube.com/"); 
request.Referer = "http://www.youtube.com/"; // optional 
request.UserAgent = 
    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; " + 
    "Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; " + 
    ".NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; " + 
    "InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)"; 
try 
{ 
    var response = (HttpWebResponse)request.GetResponse(); 
    using (var reader = new StreamReader(response.GetResponseStream())) 
    { 
     var html = reader.ReadToEnd(); 
    } 
} 
catch (WebException ex) 
{ 
    Log(ex); 
} 
+0

私は彼がDebug.WriteLine(ex.ToString())を使うことを勧めます。そのため、メッセージだけでなく例外全体を取得します。 –

+0

@John、that sence –

関連する問題