Usando WebRequest
Quiero saber si me da un¿Cómo verifico si hay una respuesta 302? WebRequest
"302 trasladó temporalmente"
respuesta en lugar de obtener automáticamente la nueva URL.
Usando WebRequest
Quiero saber si me da un¿Cómo verifico si hay una respuesta 302? WebRequest
"302 trasladó temporalmente"
respuesta en lugar de obtener automáticamente la nueva URL.
Si desea detectar una respuesta de redirección, en lugar de seguir automáticamente a crear el WebRequest
y establezca la propiedad AllowAutoRedirect
a 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"];
}
No he verificado esto por mi cuenta, pero acabo de encontrar algo que dice: "Si la propiedad HttpWebRequest.AllowAutoRedirect es falso, HttpStatusCode.Found provocará una excepción ". Fuente: http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.htm –
@ Nathan: Realmente no veo cómo, ya que HttpStatusCode es una enumeración. La documentación vinculada (debe terminar en '.html' BTW) parece estar desactualizada; esa oración probablemente fue un error de cortar y pegar. – devstuff
BTW, también puede usar HttpStatusCode.Redirect (otro alias para 302), que es un poco más obvio. – devstuff
así:
HttpWebResponse response;
int code = (int) response.StatusCode;
El código debe ser
HttpStatusCode.TemporaryRedirect
HttpStatusCode.TemporaryRedirect es un 307. http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.html#TemporaryRedirect –
Ahora puedo ver el código de respuesta, pero aún así redirige y me da 'OK' –
@Nathan Taylor: Copié/pegué lo que CURL me dio usando 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
Para .NET? ¿Java? MSX? –
WebRequest es una clase .NET. – jimyi
En realidad, las etiquetas dicen todo sobre el código. – Tarik