2017-09-07 2 views
0
gefunden

Ich versuche, auf eine Website zu verbinden, aber es hält diesen Fehler zurückgegeben, obwohl ich die Website in meinem Browser erreichen:WebRequest.GetResponse - Der Remote-Server hat einen Fehler zurückgegeben: (404) Nicht

An exception of type 'System.Net.WebException' occurred in System.dll but was not handled in user code

Additional information: The remote server returned an error: (404) Not Found.

Ich bin ziemlich sicher, dass mein Code korrekt ist, da ich in letzter Zeit den gleichen Code verwendet habe, aber nicht herausfinden kann, warum er einen Fehler zurückgibt, irgendwelche Vorschläge? Mein Code:

OddsTodayREQUEST = WebRequest.Create("http://www.betexplorer.com/next/soccer/") 
Using OddsTodayRESPONSE As WebResponse = OddsTodayREQUEST.GetResponse() 
      Using OddsTodayREADER As New StreamReader(OddsTodayRESPONSE.GetResponseStream()) 
       OddsTodayHTML = OddsTodayREADER.ReadToEnd() 
      End Using 
     End Using 
+0

404 = die Seite existiert nicht. Können Sie in Ihrem Browser genau diese Seite auf der Website aufrufen? – GibralterTop

+0

Ja, ich kann es in meinem Browser erreichen – HitmanHeathcote

Antwort

0

Sie müssen Useragent hinzufügen, wie @ChaseRocker, um seine Antwort Außerdem erwähnt, ist es besser AutomaticDecompression Eigenschaft HttpWebClient zu bedienen und Sie können hinzufügen Accept Header. Ich habe auch OddsTodayRESPONSE.GetResponseStream() in Using Anweisung verwendet.

Dim OddsTodayREQUEST As HttpWebRequest = WebRequest.Create("http://www.betexplorer.com/next/soccer/") 
OddsTodayREQUEST.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
OddsTodayREQUEST.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate 'Decompressing makes the request be done faster 
OddsTodayREQUEST.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0" 
Using OddsTodayRESPONSE As HttpWebResponse = OddsTodayREQUEST.GetResponse() 
    Using OddsTodayRESPONSESTREAM = OddsTodayRESPONSE.GetResponseStream() 
     Using OddsTodayREADER As New StreamReader(OddsTodayRESPONSESTREAM) 
      OddsTodayHTML = OddsTodayREADER.ReadToEnd() 
     End Using 
    End Using 
End Using 
+0

Vielen Dank für diese Erklärung, funktioniert jetzt perfekt. – HitmanHeathcote

1

Die Website will ein User Agent auf die Anforderung hinzugefügt. Sie können What's my user agent? google eigene Faust zu finden und es so hinzufügen:

OddsTodayREQUEST.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" 
+0

Vielen Dank für Ihre Hilfe, ist es am besten, einen User Agent für das Scraping aller dieser Seiten oder nur diejenigen, die einen User Agent benötigen, einzubinden? Wenn letzteres, woher weißt du, dass die Website eines erfordert? – HitmanHeathcote

+0

Ich würde Ihnen empfehlen, den Benutzer-Agent einzuschließen, wenn Sie replizieren möchten, was ein Web-Browser tut. Außerdem konnte ich nur feststellen, dass die Website es durch Tests benötigt. Ich habe den gleichen 404 Fehler wie du, also habe ich einen User Agent hinzugefügt und es hat funktioniert. –

+0

Ehrfürchtig, danke, dass du dir die Zeit genommen hast, krank, es in alle zukünftigen Projekte aufzunehmen. – HitmanHeathcote

Verwandte Themen