HttpWebResponse返回远程服务器返回错误:(403)禁止

问题描述:

我想HTML输出HttpWebResponse返回远程服务器返回错误:(403)禁止

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

,但我总是得到

HTTPWEBRESPONSE远程服务器返回错误:(403 )禁止

我使用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; 
    } 

我也尝试用UserAgent的却是同样的

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

我无法找到论坛或您需要通过身份验证凭据与Web请求的任何解决方案互联网

看来你还需要发送一个Accept标题。通过以下标题发送请求将生效:

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

它似乎将接受头为您输入是必要的。对于使用webclient的人可以这样做:'webClient.Headers.Add(“accept”,“*/*”);' – 2014-06-16 15:37:55

+0

对我无帮助 – 2016-06-21 12:37:48

+0

您的解决方案不起作用 – 2017-11-08 07:02:53

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

不是为我工作 – 2016-06-21 12:38:55

听起来像他们不希望你屏幕刮他们的内容。

你可以尝试用提琴手来看看请求/响应,看看发生了什么。

确保您的凭据设置正确。

request.Credentials = CredentialCache.DefaultCredentials; 

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

如果您需要特定的凭证,你可以创建他们这样

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

嗯非解决方案的作品。我不喜欢用户名和密码。为什么我需要用户名和密码来阅读HTML? – senzacionale 2010-07-01 07:44:42

+0

不适合我 – 2016-06-21 12:38:47