Korzystanie WebRequest
Chcę wiedzieć, czy mogę dostaćJak sprawdzić odpowiedź 302? WebRequest
"302 Przeniesiony tymczasowo" zamiast
odpowiedź automatycznie uzyskać nowy adres URL.
Korzystanie WebRequest
Chcę wiedzieć, czy mogę dostaćJak sprawdzić odpowiedź 302? WebRequest
"302 Przeniesiony tymczasowo" zamiast
odpowiedź automatycznie uzyskać nowy adres URL.
Jeśli chcesz wykryć odpowiedź przekierowania, zamiast po to automatycznie utworzyć WebRequest
i ustawić właściwość AllowAutoRedirect
do 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"];
}
Nie zweryfikowałem tego samodzielnie, ale właśnie znalazłem coś mówiącego: "Jeśli właściwość HttpWebRequest.AllowAutoRedirect jest false, HttpStatusCode.Found spowoduje zgłoszenie wyjątku. " Źródło: http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.htm –
@Nathan: Nie widzę jak, ponieważ HttpStatusCode jest wyliczeniem. Powiązana dokumentacja (musi się kończyć w ".html" BTW) wydaje się być nieaktualna; to zdanie było prawdopodobnie błędem wycinania i wklejania. – devstuff
BTW, można również użyć HttpStatusCode.Redirect (inny alias dla 302), co jest bardziej oczywiste. – devstuff
tak:
HttpWebResponse response;
int code = (int) response.StatusCode;
Kod powinien być
HttpStatusCode.TemporaryRedirect
HttpStatusCode.TemporaryRedirect to 307. http://www1.cs.columbia.edu/~lok/csharp/refdocs/System.Net/types/HttpStatusCode.html#TemporaryRedirect –
Widzę teraz kod odpowiedzi, ale nadal przekierowuje i daje mi "OK" –
@Nathan Taylor: Kopiuję/wklejam to, co CURL dał mi za pomocą 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
Dla .NET? Jawa? MSX? –
WebRequest to klasa .NET. – jimyi
Właściwie tagi mówią wszystko o kodzie. – Tarik