2010-06-30 209 views
1

我想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請求的任何解決方案互聯網

回答

7

看來你還需要發送一個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

1

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

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

0

聽起來像他們不希望你屏幕刮他們的內容。

你可以嘗試用提琴手來看看請求/響應,看看發生了什麼。

1

確保您的憑據設置正確。

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

相關問題