2011-06-03 12 views
15

Yanıt Durumu kodunun 200 olmadığı durumlarda bir HTTP GET yanıtını okumam gerekiyor. Bazen 401, diğer 403, ancak bir Yanıt içeriği olacak. HttpWebResponse ve HttpWebRequest sınıflarını kullanmaya çalışırsam, yanıt durumu 200 OK olmadığında bir istisna atar. Baska öneri? eğer hariçASP.NET HTTP Durumu OLDUĞUNDA Web Yanıtı Alın 200 OK

cevap

34
var request = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/1"); 
try 
{ 
    using (WebResponse response = request.GetResponse()) 
    { 
     // Success 
    } 
} 
catch (WebException e) 
{ 
    using (WebResponse response = e.Response) 
    { 
     HttpWebResponse httpResponse = (HttpWebResponse)response; 
     Console.WriteLine("Error code: {0}", httpResponse.StatusCode); 
     using (var streamReader = new StreamReader(response.GetResponseStream())) 
      Console.WriteLine(streamReader.ReadToEnd()); 
    } 
} 
+0

'catch response' benim için olduğu gibi, o zaman ben de, bir kasten kesilmiş sunucuyla test edildi ... başka istisna atar ve tamamen yararsız, boş. Benim için "Uzak sunucuya bağlanılamıyor" özel durum benim için yeterliydi. Ama evet, normalde istisnalar Durum Kodları ve diğer konular için detaylar hafif. Bu kodla ilgili tavsiyem - sadece null 'response' için başa çık - muhtemelen 'e.ToString()' i iade et,' bu dava için yeterince iyi olurdu. – vapcguy

+0

VE NEXT TIME - bu kodun 2. satırı olarak bir 'request.Credentials = CredentialCache.DefaultCredentials; '(401) Yetkisiz' hatalarını alıp anlayamadım, çünkü o satırı eklediğim bir web servisini arıyordum ve sonra bu kodu deniyordum! Bunu da ona yapmalısın! – vapcguy

+0

Ve bu kod '401'i teslim etmiyor, StatusCode için 'Yetkisiz' diyecek. – vapcguy

İlgili konular