Usiłuję uzyskać numer kodu statusu HTTP z HttpWebResponse
obiektu zwróconego z HttpWebRequest
. Miałem nadzieję uzyskać rzeczywiste liczby (200, 301,302, 404 itd.) Zamiast opisu tekstowego. („Ok”, „MovedPermanently” itp.) Czy liczba jest zakopana we właściwości gdzieś w obiekcie odpowiedzi? Jakieś pomysły oprócz stworzenia dużej funkcji przełączania? Dzięki.
HttpWebRequest webRequest = (HttpWebRequest)WebRequest
.Create("http://www.gooogle.com/");
webRequest.AllowAutoRedirect = false;
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
//Returns "MovedPermanently", not 301 which is what I want.
Console.Write(response.StatusCode.ToString());
c#
.net
http
httpwebrequest
James Lawruk
źródło
źródło
Odpowiedzi:
HttpStatusCode (typ
response.StatusCode
) to wyliczenie, w którym wartości elementów są zgodne z kodami stanu HTTP, np.źródło
bool success = ((int)response.StatusCode) >= 200 && ((int)response.StatusCode) < 300;
Musisz być ostrożny, odpowiedzi serwera w zakresie od 4xx do 5xx zgłaszają wyjątek WebException. Musisz go złapać, a następnie uzyskać kod stanu z obiektu WebException:
źródło
Zgodnie z „dtb” musisz użyć HttpStatusCode, ale po „zeldi” musisz być bardzo ostrożny z odpowiedziami na kod> = 400.
To zadziałało dla mnie:
źródło
Wystarczy zmusić
StatusCode
doint
.źródło
źródło