En utilisant WebRequest
Je veux savoir si je reçois unComment puis-je vérifier une réponse 302? WebRequest
"302 Moved Temporarily"
réponse au lieu d'obtenir automatiquement la nouvelle URL.
En utilisant WebRequest
Je veux savoir si je reçois unComment puis-je vérifier une réponse 302? WebRequest
"302 Moved Temporarily"
réponse au lieu d'obtenir automatiquement la nouvelle URL.
Si vous voulez détecter une réponse de redirection, au lieu de la suivre crée automatiquement les WebRequest
et définissez la propriété 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"];
}
Je ne l'ai pas vérifié moi-même, mais je viens de trouver quelque chose disant: "Si la propriété HttpWebRequest.AllowAutoRedirect est false, HttpStatusCode.Found provoquera l'émission d'une exception. " Source: http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.htm –
@Nathan: Je ne vois pas vraiment comment, puisque HttpStatusCode est une énumération. La documentation liée (doit se terminer par '.html' BTW) semble être obsolète; cette phrase était probablement un bug de couper-coller. – devstuff
BTW, vous pouvez également utiliser HttpStatusCode.Redirect (un autre alias pour 302), ce qui est un peu plus évident. – devstuff
comme ceci:
HttpWebResponse response;
int code = (int) response.StatusCode;
Le code doit être
HttpStatusCode.TemporaryRedirect
HttpStatusCode.TemporaryRedirect est un 307. http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.html#TemporaryRedirect –
Je peux maintenant voir le code de réponse, mais il reste redirige et me donne 'OK' –
@Nathan Taylor: J'ai copié/collé ce que CURL m'a donné en utilisant curl -I "url" –
VB Net Cod e
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
Pour .NET? Java? MSX? –
WebRequest est une classe .NET. – jimyi
En fait, les balises disent tout sur le code. – Tarik