问题
Using WebRequest
I want to know if I get a
"302 Moved Temporarily"
response instead of automatically get the new url.
回答1:
If you want to detect a redirect response, instead of following it automatically create the WebRequest
and set the AllowAutoRedirect
property to 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"];
}
回答2:
Like so:
HttpWebResponse response;
int code = (int) response.StatusCode;
The code should be
HttpStatusCode.TemporaryRedirect
回答3:
VB Net Code
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
来源:https://stackoverflow.com/questions/1391373/how-do-i-check-for-a-302-response-webrequest