Frage

Der folgende Code schlägt mit 400 Bad Request Ausnahme. Meine Netzwerkverbindung ist gut, und ich kann auf die Website gehen, aber ich kann dieses uri nicht bekommen mit HttpWebRequest.

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);                
    }
}
War es hilfreich?

Lösung

Zuerst warf den WebRequest auf ein HttpWebRequest wie folgt aus:

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

Dann fügen Sie diese Codezeile:

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

Andere Tipps

Set Useragent und Referer in der 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);
}

Es könnte viele Ursachen für dieses Problem sein. Haben Sie weitere Informationen über die WebException?

Eine Ursache, die ich in vor ausgeführt haben, ist, dass Sie einen schlechten User-Agent-String haben. Einige Websites (Google zum Beispiel) prüfen, ob Anfragen von bekannten Benutzeragenten kommen automatisierte Bots Anstoßen die Seiten zu verhindern.

In der Tat können Sie überprüfen möchten, dass der Nutzungsvertrag für YouTube ausschließen Sie nicht zu tun, was du tust. Ist dies der Fall, dann, was Sie tun, indem Sie durch zugelassene Kanäle wie Web-Services besser erreicht werden kann.

Vielleicht haben Sie einen Proxy-Server ausgeführt habe, und Sie haben nicht festgelegt, die Proxy-Eigenschaft des HttpWebRequest?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top