HttpWebRequest 및 HttpWebResponse에서 Http 상태 코드 번호 (200, 301, 404 등) 가져 오기 된 객체 에서 HTTP 상태 코드

에서 HttpWebResponse반환 된 객체 에서 HTTP 상태 코드 번호를 가져 오려고 합니다 HttpWebRequest. 텍스트 설명 대신 실제 숫자 (200, 301, 302, 404 등)를 얻으려고했습니다. ( “Ok”, “MovedPermanently”등) 응답 개체의 어딘가에 속성에 묻힌 숫자입니까? 큰 스위치 기능을 만드는 것 이외의 아이디어가 있습니까? 감사.

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());



답변

Console.Write((int)response.StatusCode);

HttpStatusCode (의 유형 response.StatusCode)는 멤버의 값이 HTTP 상태 코드와 일치하는 열거입니다 (예 :

public enum HttpStatusCode
{
    ...
    Moved = 301,
    OK = 200,
    Redirect = 302,
    ...
}


답변

4xx와 5xx 범위의 서버 응답은 WebException을 발생시킵니다. 잡아서 WebException 객체에서 상태 코드를 가져와야합니다.

try
{
    wResp = (HttpWebResponse)wReq.GetResponse();
    wRespStatusCode = wResp.StatusCode;
}
catch (WebException we)
{
    wRespStatusCode = ((HttpWebResponse)we.Response).StatusCode;
}


답변

‘dtb’에 따라 HttpStatusCode를 사용해야하지만 ‘zeldi’에 따라 코드 응답> = 400에 특히주의해야합니다.

이것은 나를 위해 일했다 :

HttpWebResponse response = null;
HttpStatusCode statusCode;
try
{
    response = (HttpWebResponse)request.GetResponse();
}
catch (WebException we)
{
    response = (HttpWebResponse)we.Response;
}

statusCode = response.StatusCode;
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
sResponse = reader.ReadToEnd();
Console.WriteLine(sResponse);
Console.WriteLine("Response Code: " + (int)statusCode + " - " + statusCode.ToString());


답변

에 강제 StatusCodeint.

var statusNumber;
try {
   response = (HttpWebResponse)request.GetResponse();
   // This will have statii from 200 to 30x
   statusNumber = (int)response.StatusCode;
}
catch (WebException we) {
    // Statii 400 to 50x will be here
    statusNumber = (int)we.Response.StatusCode;
}


답변

//Response being your httpwebresponse
Dim str_StatusCode as String = CInt(Response.StatusCode)
Console.Writeline(str_StatusCode)


답변