如何从Web客户端获取状态代码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

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

Catch wex As WebException
        If TypeOf wex.Response Is HttpWebResponse Then
          msgbox(DirectCast(wex.Response, HttpWebResponse).StatusCode)
            End If

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

在没有抛出异常的情况下,是否有获得状态代码的方法?

PS:我不喜欢使用httpwebquest/httpwebresponse。

提问于
用户回答回答于

试过了。ResponseHeaders不包含状态码。

如果我没有弄错,WebClient能够在单个方法调用中抽象出多个不同的请求(例如正确处理100个继续响应,重定向等)。我怀疑,如果没有使用,HttpWebRequest并且HttpWebResponse可能无法使用独特的状态代码。

我发现如果你对中间状态码不感兴趣,你可以放心地认为最后的状态码是在2xx(成功的)范围内,否则这个调用就不会成功。

用户回答回答于

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

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!");
}

try
{
    // send request
}
catch (WebException e)
{
    // check e.Status as above etc..
}

扫码关注云+社区