取得 HttpStatusCode 的方式通常是從 HttpWebRequest 中再取出 HttpWebResponse
取得了 HttpWebResponse 後再取得 StatusCode property
但取得 HttpWebResponse 是有風險的…
例如該 URL 是 404 的狀態…合理的來講根本就沒有 Response
這時再做 HttpWebRequest.EndGetResponse 的動作就會發生 Exception
所以若要得到像 404 這類無 Response 的 StatusCode 無法單從 WebResponse 來判斷…
必須利用 WebException 來取得…
以下是一個簡單的範例…可以取得正確的 StatusCode
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
RequestState requestState = (RequestState)asynchronousResult.AsyncState;
HttpWebRequest request = requestState.request;
try
{
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
// 這裡可以取得 200 之類合法的 Response HttpStatusCode
HttpStatusCode status = response.StatusCode;
}
catch (WebException wexp)
{
HttpWebResponse response = (HttpWebResponse)wexp.Response;
// 這裡可以取得 404 之類無法取得 Server Response 的 HttpStatusCode
HttpStatusCode status = response.StatusCode;
}
catch (Exception excp)
{
}
}
沒有留言:
張貼留言