【问题标题】:How do i check for a 302 response? WebRequest如何检查 302 响应?网络请求
【发布时间】:2010-11-26 08:33:30
【问题描述】:

使用WebRequest我想知道我是否得到一个

“302 临时移动”

响应而不是自动获取新的url。

【问题讨论】:

  • 其实标签说明了代码的一切。
  • 在亚伦之前他们没有。 jimyi 重新标记了它。
  • 哎呀,如果您不知道 WebRequest 是什么,我假设您不知道如何使用 WebRequest 来做这件事。 .NET 是一个更好的标签,哎呀。

标签: .net httpresponse http-status-code-302


【解决方案1】:

像这样:

HttpWebResponse response;
int code = (int) response.StatusCode;

代码应该是

HttpStatusCode.TemporaryRedirect

【讨论】:

【解决方案2】:

如果您想检测重定向响应,而不是跟随它自动创建WebRequest 并将AllowAutoRedirect 属性设置为false

HttpWebRequest request = WebRequest.Create(someUrl) as HttpWebRequest;
request.AllowAutoRedirect = false;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.Redirect || 
    response.StatusCode == HttpStatusCode.MovedPermanently)
{
    // Do something here...
    string newUrl = response.Headers["Location"];
}

【讨论】:

  • 我自己还没有验证过,但是我刚刚发现有一句话说:“如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 HttpStatusCode.Found 将导致抛出异常。”来源:www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/…
  • @Nathan:我真的不明白怎么做,因为 HttpStatusCode 是一个枚举。链接的文档(需要以 '.html' BTW 结尾)似乎已过时;那句话可能是一个剪切粘贴错误。
  • 顺便说一句,你也可以使用HttpStatusCode.Redirect(302的另一个别名),这样更明显一点。
  • 修改了别名并添加了301
  • 另一个调整;也可以在“做某事”示例中使用response.Headers[HttpResponseHeader.Location](类似于状态代码常量)。
【解决方案3】:

VB 网络代码

Function GetRealUrl(someUrl As String) As String
        Dim req As HttpWebRequest = TryCast(WebRequest.Create(someUrl), HttpWebRequest)
        req.AllowAutoRedirect = False
        Dim response As HttpWebResponse = TryCast(req.GetResponse(), HttpWebResponse)
        If response.StatusCode = HttpStatusCode.Redirect OrElse response.StatusCode = HttpStatusCode.MovedPermanently Then
            ' Do something...
            Dim newUrl As String = response.Headers("Location")
            getrealurl = newUrl
        Else
            getrealurl = someUrl
        End If
End Function

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2018-08-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多