我正在使用WebClient从一个有时不可用的页面中获取一些信息,302暂时移动。所以我想通过编程来检测页面是否存在
我尝试用下面的代码覆盖WebClient WebResponse,以便只在页面状态为OK时返回页面,但它不起作用。
protected override WebResponse GetWebResponse(WebRequest request)
{
var response = base.GetWebResponse(request);
if (response is HttpWebResponse)
return (response as HttpWebResponse).StatusCode == HttpStatusCode.OK ? response : null;
return null;
}当我使用我的重写类获取页面时(当它不可用时),它只是重定向,没有返回null
获取代码
private async Task<string> Get(string uri)
{
return await Handler.DownloadStringTaskAsync(new Uri(uri));
}我想要实现:我希望web客户端尝试获得的页面,但它没有找到,所以它已被重定向到另一个页面。
发布于 2012-11-20 07:43:53
这不会告诉你状态,但可以从你被重定向的事实中推断出来。
if(reponse.ResponseUri != request.RequestUri) {
// if you really want to know the status
// set AllowAutoRedirect = false;
// and send another request in here.
} 发布于 2012-11-20 07:17:13
默认情况下,WebClient会自动跟踪重定向(最多支持最大数量)。
如果您覆盖GetWebRequest来修改返回的HttpWebRequest,将其AllowAutoRedirect属性设置为false,那么我相信它将直接返回302 -尽管可能通过异常...
https://stackoverflow.com/questions/13464051
复制相似问题