記一次訪問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();