なぜ私は、HttpWebRequestは400不正な要求を返していますか?

StackOverflow https://stackoverflow.com/questions/702079

  •  22-08-2019
  •  | 
  •  

質問

次のコードは、400不正な要求の例外で失敗します。マイネットワーク接続が良好であり、私は現場に行くことができますが、私はHttpWebRequestので、このURIを取得することはできません。

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);                
    }
}
役に立ちましたか?

解決

まず、このようにHttpWebRequestのにWebRequestクラスをキャストします:

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

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

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

他のヒント

設定のユーザーエージェントののリファラーのあなたの HttpWebRequestのの中に

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);
}

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

私は前に実行した一つの原因は、あなたが悪いのユーザーエージェント文字列を持っているということです。一部のWebサイト(たとえばGoogleが)要求が自分のページを打つから自動ボットを防ぐことが知られているユーザエージェントから来ていることを確認してください。

実際には、あなたは、YouTubeのためのユーザ契約は何をやっているやってからあなたを妨げるものではないことをチェックすることをお勧めします。それがない場合は、あなたがやっていることは、より良いWebサービスなどの承認チャネルを経由することによって達成することができる。

たぶんあなたが実行しているプロキシサーバーを持っている、とあなたはHttpWebRequestの?

のプロキシプロパティを設定していません
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top