2011-11-14 4 views
1

Je ne sais pas ce qui manque dans mon code.Quel est le problème avec mon HttpWebRequest

Si j'appelle un 404 url ​​mon code obtenir une exception.

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

je reçois une exception sur req.GetResponse()

Il est l'erreur que je reviens

Le serveur distant a renvoyé une erreur: (404) Introuvable.

Je ne suis pas supposé recevoir HttpStatusCode.NotFound?

La solution:

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

Quelle URL touchez-vous? – McKay

+0

Vérifiez la valeur de args.Url. – Tim

+1

Probablement [cette réponse] [1] ici répond également à votre question. [1]: http://stackoverflow.com/questions/1949610/c-how-can-i-catch-a-404 –

Répondre

3

HttpWebRequest soulève une exception en états de réponse non réussies.
Ce problème est inhérent à conception.

Vous pouvez obtenir la réponse en attrapant un WebException et en vérifiant sa propriété Response.

+0

Bon, c'est du travail merci. Avec la réponse d'Alaudo, j'ai juste besoin de lancer WebException.Response à HttpWebResponse –