日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容

發布時間:2023/12/13 综合教程 22 生活家
生活随笔 收集整理的這篇文章主要介紹了 C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄一、事故現場二、解決方法


一、事故現場

使用WebClient發送請求,如果返回的狀態碼不是2xx或3xx,那么默認情況下會拋出異常,
那如何才能獲取到請求返回的內容呢?

二、解決方法

可以通過try catch獲取到WebException類型的異常;

api接口:

   [HttpGet("test")]
   public ActionResult test()
   {
       Response.StatusCode = 401;
       return Content("test");
   }

使用WebClient發送請求:
方式一:直接捕獲WebException 類型異常;

   public static string WebClientGetRequest(string url)
   {
       try
       {
           using (WebClient client = new WebClient())
           {
               //設置編碼格式
               client.Encoding = System.Text.Encoding.UTF8;
               //獲取數據
               var result = client.DownloadString(url);
               return result;
           }
       }
       catch (WebException ex)
       {
           using (HttpWebResponse hr = (HttpWebResponse)ex.Response)
           {
               int statusCode = (int)hr.StatusCode;
               StringBuilder sb = new StringBuilder();
               StreamReader sr = new StreamReader(hr.GetResponseStream(), Encoding.UTF8);
               sb.Append(sr.ReadToEnd());
               Console.WriteLine("StatusCode:{0},Content:{1}", statusCode, sb);// StatusCode:401,Content:test
           }
           return "";
       }
   }

方法二:捕獲 Exception 異常,然后再判斷異常類型;

   public static string WebClientGetRequest(string url)
   {
       try
       {
           using (WebClient client = new WebClient())
           {
               //設置編碼格式
               client.Encoding = System.Text.Encoding.UTF8;
               //獲取數據
               var result = client.DownloadString(url);
               return result;
           }
       }
       catch (WebException ex)
       {
           if (ex.GetType().Name == "WebException")
           {
               WebException we = (WebException)ex;
               using (HttpWebResponse hr = (HttpWebResponse)we.Response)
               {
                   int statusCode = (int)hr.StatusCode;
                   StringBuilder sb = new StringBuilder();
                   StreamReader sr = new StreamReader(hr.GetResponseStream(), Encoding.UTF8);
                   sb.Append(sr.ReadToEnd());
                   Console.WriteLine("StatusCode:{0},Content:{1}", statusCode, sb);// StatusCode:401,Content:test
               }
           }
           return "";
       }
   }

總結

以上是生活随笔為你收集整理的C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。