2010-06-30 3 views
1

Je veux obtenir la sortie HTML dansHttpWebResponse retour Le serveur distant a renvoyé une erreur: (403) Interdit

http://www.belmondo.si/turisticna-ponudba/pocitnice/kratkirezultati?cid=ID&cityid=DPS&izhid=&trajanjeid=&oskrbaid=&kategorijaid=&ooseb=2&otrok=0&lasten=1&prvic=1&rid=0-1&subtemplate=eksotika

mais je reçois toujours

HttpWebResponse Le serveur distant a renvoyé une erreur: (403) Interdit

J'utilise HttpWebResponse

protected string GetHtmlStringA(string url) 
    { 
     string sHtml = ""; 
     HttpWebRequest request; 
     HttpWebResponse response = null; 
     Stream stream = null; 
     request = (HttpWebRequest)WebRequest.Create(url); 
     response = (HttpWebResponse)request.GetResponse(); 
     stream = response.GetResponseStream(); 
     StreamReader sr = new StreamReader(stream, System.Text.Encoding.Default); 
     sHtml = sr.ReadToEnd(); 
     if (stream != null) stream.Close(); 
     if (response != null) response.Close(); 
     return sHtml; 
    } 

j'essaie aussi avec UserAgent mais il est le même

req.request= 
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13"; 

je ne peux trouver aucune solution sur les forums ou sur Internet

Répondre

7

Il semble que vous deviez également envoyer un en-tête Accept. Envoyer une demande avec les en-têtes suivants fonctionnera:

request.UserAgent = "Foo"; 
request.Accept = "*/*"; 
+0

Il semble ajouter accepter en-tête que vous avez entré est nécessaire. pour qui webclient peut faire comme ceci: 'webClient.Headers.Add (" accepter "," */* ");' –

+0

N'aide pas pour moi –

+0

votre solution ne fonctionne pas –

1

Vous devez passer des informations d'identification d'authentification à la demande web:

request.Credentials = new NetworkCredentials("username", "password"); 
+0

ne fonctionne pas pour moi –

0

Semble à moi, comme ils ne veulent pas que vous l'écran de raclage de leur contenu.

Vous pourriez essayer la requête/réponse avec fiddler pour voir ce qui se passe.

1

Assurez-vous que vos informations d'identification sont correctement définies.

request.Credentials = CredentialCache.DefaultCredentials; 

// if we have a proxy set its creds as well 
if(request.Proxy != null) 
{ 
    request.Proxy.Credentials = CredentialCache.DefaultCredentials; 
} 

Si vous avez besoin des informations d'identification spécifiques que vous pouvez les créer de cette façon

request.Credentials = new NetworkCredentials("username", "password"); 
+0

hmm non de solutions fonctionne. Je n'ai pas de nom d'utilisateur et de mot de passe. Pourquoi j'ai besoin d'un nom d'utilisateur et d'un mot de passe pour lire le HTML? – senzacionale

+0

Ne fonctionne pas pour moi –

Questions connexes