首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebClient StatusCode

WebClient StatusCode
EN

Stack Overflow用户
提问于 2012-11-20 07:10:48
回答 2查看 2.9K关注 0票数 1

我正在使用WebClient从一个有时不可用的页面中获取一些信息,302暂时移动。所以我想通过编程来检测页面是否存在

我尝试用下面的代码覆盖WebClient WebResponse,以便只在页面状态为OK时返回页面,但它不起作用。

代码语言:javascript
复制
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

获取代码

代码语言:javascript
复制
private async Task<string> Get(string uri)
{
    return await Handler.DownloadStringTaskAsync(new Uri(uri));
}

我想要实现:我希望web客户端尝试获得的页面,但它没有找到,所以它已被重定向到另一个页面。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-20 07:43:53

这不会告诉你状态,但可以从你被重定向的事实中推断出来。

代码语言:javascript
复制
if(reponse.ResponseUri != request.RequestUri) {
   // if you really want to know the status
   // set AllowAutoRedirect = false;
   // and send another request in here.
}   
票数 0
EN

Stack Overflow用户

发布于 2012-11-20 07:17:13

默认情况下,WebClient会自动跟踪重定向(最多支持最大数量)。

如果您覆盖GetWebRequest来修改返回的HttpWebRequest,将其AllowAutoRedirect属性设置为false,那么我相信它将直接返回302 -尽管可能通过异常...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13464051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档