2011-05-17 97 views
2

您好,我正在編碼與任何想法下面的代碼問題?Web請求編碼問題

string url = "http://www.google.com/ig/api?weather=istanbul,TR&hl=tr"; 
     HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
     using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
     { 
      StreamReader reader = new StreamReader(response.GetResponseStream()); 
      string retVal = reader.ReadToEnd(); 
      Response.Write(retVal); 
     } 

我的Screenshoot就是這樣的;

enter image description here

感謝您的幫助!

+0

得到了同樣的問題與西班牙。接受的答案爲我工作。 – Jeroen 2011-06-15 22:39:14

回答

4

Google因檢查useragent HTTP標頭而臭名昭着。因爲你沒有將它的編碼設置爲ISO-8859-9。簡單的解決方案是手動設置HttpWebRequestUserAgent屬性。將它設置爲你想要的任何東西,下面是一個Firefox的字符串(和一個額外的Using塊):

 string url = "http://www.google.com/ig/api?weather=istanbul,TR&hl=tr"; 
     HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
     request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"; 
     using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
     { 
      using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
      { 
       string retVal = reader.ReadToEnd(); 
       Console.WriteLine(retVal); 
      } 
     } 
+0

謝謝你節省了我的時間:) – Xenon 2011-05-17 13:33:01

+0

讓我給你買一杯啤酒。 – Jeroen 2011-06-15 22:38:31