2011-11-14 1 views
1

私のコードには何がないのか分かりません。私のHttpWebRequestで何が問題なのですか

私が404のURLを呼び出すと、私のコードで例外が発生します。

HttpWebRequest req = WebRequest.Create(args.Url) as HttpWebRequest; 
req.AllowAutoRedirect = true; 
req.Timeout = args.TimeOut; 
req.UserAgent = args.UserAgent; 
HttpWebResponse answer = req.GetResponse() as HttpWebResponse; 
objResult.Status =answer.StatusCode; 
Stream stream = answer.GetResponseStream(); 

は、私がreq.GetResponse上の例外を取得()

私は、リモートサーバーがエラーを返しました

取り戻すエラーがあります:(404)が見つかりません。

私はHttpStatusCode.NotFoundを受け取らないと思いますか?

ソリューション:

try 
     { 
     HttpWebRequest req = WebRequest.Create(args.Url) as HttpWebRequest; 
     req.AllowAutoRedirect = true; 
     req.Timeout = args.TimeOut; 
     req.UserAgent = args.UserAgent;  
     HttpWebResponse answer = req.GetResponse() as HttpWebResponse; 

     objResult.Status =answer.StatusCode;  
     } 
     catch (WebException ex) 
     { 
     HttpWebResponse response = ex.Response as HttpWebResponse; 
     objResult.Status = response.StatusCode;  
     } 
+0

あなたはどんなURLを打っていますか? – McKay

+0

args.Urlの値を確認してください。 – Tim

+1

おそらく[この回答] [1]こちらもあなたの質問に答えます。 [1]:http://stackoverflow.com/questions/1949610/c-how-can-i-catch-a-404 –

答えて

3

HttpWebRequestが非正常な応答ステータスに例外をスローします。
この動作は仕様です。

WebExceptionを捕まえ、そのResponseのプロパティを確認すると、応答が得られます。

+0

良いです、それは仕事のおかげです。 Alaudoからの答えで私はWebExceptionをキャストする必要があります.HttpWebResponseへの応答 –

関連する問題