2013-02-01 36 views
22

का उपयोग करते समय 404 प्रतिक्रिया स्थिति निर्धारित करने के लिए मैं responseHttpClient की GetAsync विधि को C# और .NET 4.5 का उपयोग करके 404 त्रुटियों के मामले में वापस करने का प्रयास कर रहा हूं।HttpClient.GetAsync()

वर्तमान में मैं केवल इतना कह सकता हूं कि 404 या टाइमआउट जैसी त्रुटि की स्थिति के बजाय त्रुटि हुई है।

वर्तमान में मेरे कोड मेरे कोड इस तरह दिखता है:

static void Main(string[] args) 
    { 
     dotest("http://error.123"); 
     Console.ReadLine(); 
    } 

    static async void dotest(string url) 
    { 
     HttpClient client = new HttpClient(); 

     HttpResponseMessage response = new HttpResponseMessage(); 

     try 
     { 
      response = await client.GetAsync(url); 

      if (response.IsSuccessStatusCode) 
      { 
       Console.WriteLine(response.StatusCode.ToString()); 
      } 
      else 
      { 
       // problems handling here 
       string msg = response.IsSuccessStatusCode.ToString(); 

       throw new Exception(msg); 
      } 

     } 
     catch (Exception e) 
     { 
      // .. and understanding the error here 
      Console.WriteLine( e.ToString() );     
     } 
    } 

मेरे समस्या यह है कि मैं अपवाद को संभालने और उसकी स्थिति और क्या गलत हुआ के अन्य विवरणों का निर्धारण करने में असमर्थ हूँ।

मैं अपवाद को सही ढंग से कैसे संभालें और व्याख्या करता हूं कि त्रुटियां क्या हुईं?

+0

http://msdn.microsoft.com/en-us/library/system.exception.aspx गुण पर एक नज़र डालें। अगर आपको संदेश प्रिंट करने की आवश्यकता है, तो आप 'e.Message' का उपयोग कर सकते हैं। निश्चित नहीं है, आप क्या करने की कोशिश कर रहे हैं। – Leri

उत्तर

32

आप बस प्रतिक्रिया की StatusCode संपत्ति की जांच कर सकता:

static async void dotest(string url) 
{ 
    using (HttpClient client = new HttpClient()) 
    { 
     HttpResponseMessage response = await client.GetAsync(url); 

     if (response.IsSuccessStatusCode) 
     { 
      Console.WriteLine(response.StatusCode.ToString()); 
     } 
     else 
     { 
      // problems handling here 
      Console.WriteLine(
       "Error occurred, the status code is: {0}", 
       response.StatusCode 
      ); 
     } 
    } 
} 
+0

यह मुझे "प्रकार का पहला मौका अपवाद" System.Net.Http.HttpRequestException 'mscorlib.dll में हुआ है mscorlib.dll में' System.Net.Http.HttpRequestException 'प्रकार का अपवाद हुआ लेकिन उपयोगकर्ता में इसे प्रबंधित नहीं किया गया था कोड "। क्या आप जानते होंगे कि मैं क्या खो सकता हूं? मैंने nttget के माध्यम से HttpClient संसाधन को लोड किया है, यदि यह कुछ भी बदलता है क्योंकि यह मेरे .NET 4.5 में डिफ़ॉल्ट रूप से दिखाई नहीं दे रहा था। –

+2

अपवाद क्या है? क्या यह एक टाइमआउट है? यदि ऐसा है तो आपको इस मामले को एक कोशिश/पकड़ ब्लॉक के साथ संभालना होगा। जहां तक ​​सर्वर स्टेटस कोड का संबंध है, आप उन्हें मेरे उत्तर में दिखाए गए अनुसार संभाल सकते हैं। –

+0

"अतिरिक्त जानकारी: अनुरोध भेजते समय एक त्रुटि आई।" आउटपुट विंडो से जानकारी का एकमात्र अन्य टुकड़ा है। क्या आप इसका उल्लेख करते हैं? –