c#訪問http接口的"編碼"問題


   記一次訪問http數據接口的爬坑經歷,一般訪問一個http接口。

無非就是這么幾行代碼:

  

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");
                     HttpWebResponse response = (HttpWebResponse)request.GetResponse();
         
  
            System.IO.StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));//設置響應編碼,亂碼的話
            Console.Write(sr.ReadToEnd());
            sr.Close();
            response.Close();

可是這次,死話亂碼。PostMan下正常的。。在瀏覽器中直接訪問,設置編碼為utf-8b也是可以正常顯示的。。用c#后台代碼測試了各種編碼都以無效,告終。。

查看響應頭:

Content-Encoding gzip。。。。剛開始被我略過了。。后來搜亂碼google到了博客園的博問。

更新代碼如下:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");
         
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

           //先把響應流以gzip形式解碼,然后再讀取。結果success.......
            Stream stm = new GZipStream(response.GetResponseStream(),CompressionMode.Decompress);
            
      
            System.IO.StreamReader sr = new StreamReader(stm, System.Text.Encoding.GetEncoding("utf-8"));
            Console.Write(sr.ReadToEnd());
            sr.Close();
            response.Close();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM