Utilizzando WebRequest
voglio sapere se ho unCome posso verificare una risposta 302? WebRequest
"302 sposta il prestatore"
risposta, invece di ottenere automaticamente il nuovo URL.
Utilizzando WebRequest
voglio sapere se ho unCome posso verificare una risposta 302? WebRequest
"302 sposta il prestatore"
risposta, invece di ottenere automaticamente il nuovo URL.
Se si desidera rilevare una risposta di reindirizzamento, invece di seguirlo creare automaticamente il WebRequest
e impostare la proprietà 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"];
}
Non ho verificato questo da solo, ma ho appena trovato qualcosa che dice: "Se la proprietà HttpWebRequest.AllowAutoRedirect è false, HttpStatusCode.Found causerà il lancio di un'eccezione. " Fonte: http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.htm –
@Nathan: Non vedo come, dato che HttpStatusCode è un enum. La documentazione collegata (che deve terminare nel BTW ".html") sembra non essere aggiornata; quella frase era probabilmente un bug taglia-e-incolla. – devstuff
BTW, puoi anche utilizzare HttpStatusCode.Redirect (un altro alias per 302), che è un po 'più ovvio. – devstuff
Come così:
HttpWebResponse response;
int code = (int) response.StatusCode;
Il codice dovrebbe essere
HttpStatusCode.TemporaryRedirect
HttpStatusCode.TemporaryRedirect è un 307. http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.html#TemporaryRedirect –
Ora posso vedere il codice di risposta, ma è ancora reindirizza e mi dà 'OK' –
@Nathan Taylor: copio/incollato ciò che CURL mi ha dato 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
Per .NET? Giava? MSX? –
WebRequest è una classe .NET. – jimyi
In realtà i tag dicono tutto sul codice. – Tarik