我们有一个工具可以检查给定的URL是否是活动URL。如果一个给定的url是活动的,我们软件的另一部分可以从它的屏幕上删除内容。
这是我用于检查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上托管的特定站点,我收到以下消息的web异常。在进一步的检查中,我在WebException对象中发现了以下详细信息
Status="ProtocolError“StatusDescription="Bad Behaviour”
这是请求头“用户代理: Mozilla/5.0 ( Windows;U;Windows NT5.1;en-US;rv:1.8.0.6) Gecko/20060728 Firefox/1.5主机: scenicspares.co.uk连接: Keep-Alive”
这是响应头" Keep-Alive : timeout=4,max=512 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html Date:清华,13 Jan 2011 10:29:36 GMT服务器: Apache“
我在vs2008中使用手表提取了这些头文件。使用的框架是3.5。
发布于 2011-01-13 18:55:06
事实证明,我所需要做的就是遵循
webRequest.Accept = "*/*";
webResponse = webRequest.GetResponse();而且它已经修好了。
发布于 2015-01-11 08:37:18
我相信有相当多的类似问题依赖于服务器应用程序。在我的特殊情况下,请参阅:The remote server returned an error: (403) Forbidden
发布于 2021-06-28 12:33:30
我为我的web scraping应用程序修复了这个问题,在面对这个问题一天之后,希望它能对其他人有所帮助:
public static string GetPageContent(string url)
{
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.CookieContainer = cookieContainer; // after Create() method
request.AllowAutoRedirect = true; // should be true
request.UserAgent= ".NET Framework Test Client"; // should not be null
var responseStr = string.Empty;
using (var response = request.GetResponse())
{
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
responseStr = reader.ReadToEnd();
reader.Close();
dataStream.Close();
}
return responseStr;
}https://stackoverflow.com/questions/4679085
复制相似问题