반응형
HttpWebRequest 및 HttpWebResponse에서 HttpStatus 코드 번호(200, 301, 404 등) 가져오기
나는 HTTP 상태 코드 번호를 얻으려고 합니다.HttpWebResponse
에서 반환된 개체HttpWebRequest
문자 설명보다 실제 숫자(200, 301, 302, 404 등)를 받고 싶었습니다. ("Ok", "Permanently Movemented" 등)번호가 응답 개체의 어딘가에 속성에 묻혀 있습니까?큰 스위치 기능을 만드는 것 외에 다른 아이디어가 있습니까?감사해요.
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(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());
그냥 강제로.StatusCode
로.int
.
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)
제가 그런 상황에 대처하는 방법은 이렇습니다.
//string details = ...
//...
catch (WebException ex)
{
HttpStatusCode statusCode = ((HttpWebResponse)ex.Response).StatusCode;
if (statusCode == HttpStatusCode.Unauthorized)
{
Reconnect();
//...
}
else if (statusCode == HttpStatusCode.NotFound)
{
FileLogger.AppendToLog("[ERROR] Not Found: " + details);
}
else
{
FileLogger.AppendToLog("[ERROR] " + ex.Message + ": " + details);
}
}
언급URL : https://stackoverflow.com/questions/1330856/getting-http-status-code-number-200-301-404-etc-from-httpwebrequest-and-ht
반응형
'programing' 카테고리의 다른 글
HTML 테이블에서 열을 숨기는 방법은 무엇입니까? (0) | 2023.05.21 |
---|---|
Swift에서 UI 버튼 이미지를 변경하는 방법 (0) | 2023.05.21 |
SVN을 사용해야 합니까 아니면 Git을 사용해야 합니까? (0) | 2023.05.21 |
Excel의 VBA 기능이 범위를 반환할 수 있습니까? (0) | 2023.05.21 |
일별 그룹 내 MongoDB 집계 (0) | 2023.05.21 |