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