2017-09-07 4 views
0

Je suis en train de se connecter à un site Web, mais il revient sans cesse cette erreur même si je peux accéder au site dans mon navigateur:WebRequest.GetResponse - Le serveur distant a renvoyé une erreur: (404) Introuvable

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.

Je suis assez sûr que mon code est correct car j'ai beaucoup utilisé le même code récemment mais je n'arrive pas à comprendre pourquoi il renvoie une erreur, des suggestions? Mon 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 = la page n'existe pas. Pouvez-vous frapper cette page exacte sur le site dans votre navigateur? – GibralterTop

+0

Oui je peux l'atteindre dans mon navigateur – HitmanHeathcote

Répondre

0

Vous devez ajouter UserAgent comme @ChaseRocker mentionné, en plus de sa réponse, il est préférable d'utiliser la propriété AutomaticDecompression de HttpWebClient et vous pouvez ajouter Accepter entête. J'ai également utilisé OddsTodayRESPONSE.GetResponseStream() dans l'instruction Using.

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

Merci beaucoup pour cette explication, fonctionne parfaitement maintenant. – HitmanHeathcote

1

Le site veut un agent utilisateur ajouté à la demande. Vous pouvez google What's my user agent? pour trouver votre propre et l'ajouter comme ceci:

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

Je vous remercie de m'avoir aidé, est-il préférable d'inclure un agent utilisateur pour gratter tous les sites comme celui-ci ou seulement ceux qui nécessitent un agent utilisateur? Si ce dernier, comment savez-vous que le site Web en nécessite un? – HitmanHeathcote

+0

Je vous recommande d'inclure l'agent utilisateur si vous voulez répliquer ce qu'un navigateur Web fait. En outre, j'ai seulement pu déterminer que le site Web l'a exigé par des essais. J'ai eu la même erreur 404 que vous avez faite, j'ai donc ajouté un agent utilisateur et cela a fonctionné. –

+0

Génial, merci d'avoir pris le temps, mal l'inclure sur tous les futurs projets – HitmanHeathcote