首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从webclient获取状态码?

如何从webclient获取状态码?
EN

Stack Overflow用户
提问于 2010-08-26 19:33:46
回答 10查看 118.2K关注 0票数 94

我正在使用WebClient类将一些数据发布到web表单。我想要获取表单提交的响应状态代码。到目前为止,我已经了解了如何在出现异常时获取状态代码

代码语言:javascript
复制
Catch wex As WebException
        If TypeOf wex.Response Is HttpWebResponse Then
          msgbox(DirectCast(wex.Response, HttpWebResponse).StatusCode)
            End If

但是,如果表单提交成功并且没有抛出异常,那么我将不知道状态代码(200,301,302,...)

有没有办法在没有抛出异常的情况下获得状态码?

PS:我不喜欢使用httpwebrequest/httpwebresponse

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-08-26 19:43:11

试过了。ResponseHeaders不包括状态代码。

如果我没记错的话,WebClient能够在单个方法调用中抽象出多个不同的请求(例如,正确处理100个Continue响应、重定向等)。我怀疑如果不使用HttpWebRequestHttpWebResponse,可能无法获得不同的状态代码。

我想,如果您对中间状态码不感兴趣,那么您可以放心地假定最终状态码在2xx (成功)范围内,否则调用不会成功。

遗憾的是,ResponseHeaders字典中不存在状态代码。

票数 24
EN

Stack Overflow用户

发布于 2012-02-09 23:37:26

您可以检查错误是否为WebException类型,然后检查响应代码;

代码语言:javascript
复制
if (e.Error.GetType().Name == "WebException")
{
   WebException we = (WebException)e.Error;
   HttpWebResponse response = (System.Net.HttpWebResponse)we.Response;
   if (response.StatusCode==HttpStatusCode.NotFound)
      System.Diagnostics.Debug.WriteLine("Not found!");
}

代码语言:javascript
复制
try
{
    // send request
}
catch (WebException e)
{
    // check e.Status as above etc..
}
票数 92
EN

Stack Overflow用户

发布于 2011-06-24 23:56:08

有一种方法可以使用反射来做到这一点。它适用于.NET 4.0。它访问私有字段,在没有修改的情况下可能无法在其他版本的.NET中工作。

我不知道为什么微软不用一个属性公开这个字段。

代码语言:javascript
复制
private static int GetStatusCode(WebClient client, out string statusDescription)
{
    FieldInfo responseField = client.GetType().GetField("m_WebResponse", BindingFlags.Instance | BindingFlags.NonPublic);

    if (responseField != null)
    {
        HttpWebResponse response = responseField.GetValue(client) as HttpWebResponse;

        if (response != null)
        {
            statusDescription = response.StatusDescription;
            return (int)response.StatusCode;
        }
    }

    statusDescription = null;
    return 0;
}
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3574659

复制
相关文章

相似问题

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