7

屏幕抓取時,「遠程服務器返回錯誤:(403)禁止」我們有一個工具,用於檢查給定的URL是否爲實時URL。如果給定的網址是直播的,我們軟件的另一部分可以從網站上截取內容。獲取錯誤當使用HttpWebRequest.GetResponse()

這是我的檢查代碼URL是活

public static bool IsLiveUrl(string url) 
    { 
     HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest; 
     webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5"; 
     webRequest.CookieContainer = new CookieContainer(); 
     WebResponse webResponse; 
     try 
     { 
      webResponse = webRequest.GetResponse(); 
     } 
     catch (WebException e) 
     { 
      return false; 
     } 
     catch (Exception ex) 
     { 

      return false; 
     } 
     return true; 
    } 

此代碼的工作完美,但對於託管在Apache的一個特定的網站我得到與下面的消息網絡異常。 「遠程服務器返回錯誤:(403)禁止」 在進一步檢查我發現在引發WebException對象的以下細節

狀態=「ProtocolError」 狀態說明=「不良行爲」

這是請求標題「User-Agent:Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6)Gecko/20060728 Firefox/1.5 Host:scenicspares.co.uk Connection:Keep-Alive」

這是響應標題「Keep-Alive:timeout = 4,max = 512 Connection:Keep-Alive 傳輸編碼:分塊 的Content-Type:text/html的 日期:星期四,2011年01月13 10時29分36秒GMT 服務器:Apache」

我提取使用VS2008的手錶這些頭。使用的框架工作是3.5。

回答

13

原來,這一切我需要做的是以下

  webRequest.Accept = "*/*"; 
      webResponse = webRequest.GetResponse(); 

,它是固定的。

+0

Hello @syed,我面對同樣的問題,並且已經添加了.Accept代碼,但是我仍然有這個錯誤。有任何想法嗎?謝謝 – swdev 2011-12-05 02:26:44

相關問題