ASP.Net中的Google Weather Api

时间:2011-04-04 18:50:56

标签: asp.net api weather google-weather-api

我在ASP.Net页面中使用了weather API。

如果我将语言(hl)添加到查询中,我将收到此错误: “给定编码中的字符无效。第1行,第526位。”。
它没有语言的get参数,但我想本地化输出。

这是我的代码,第二行有错误:

  XmlDocument doc = new XmlDocument();
            doc.Load("http://www.google.com/ig/api?hl=de&weather=" + location );

这有效:

  XmlDocument doc = new XmlDocument();
            doc.Load("http://www.google.com/ig/api?weather=" + location );

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

出于某种原因,Google不对输出进行UTF编码。这是一种补偿方式:

WebClient client = new WebClient();
string data = client.DownloadString("http://www.google.com/ig/api?hl=de&weather=YourTown");

byte[] encoded = Encoding.UTF8.GetBytes(data);

MemoryStream stream = new MemoryStream(encoded);

XmlDocument xml = new XmlDocument();
xml.Load(stream);

Console.WriteLine(xml.InnerXml);
Console.ReadLine();

答案 1 :(得分:2)

您可以使用HttpWebRequest取代WebClient,如下所示:

HttpWebRequest myRequest;  
HttpWebResponse myResponse= null;  
XmlDocument MyXMLdoc = null; 

myRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com/ig/api" + 
    "?weather=" + string.Format(location));  
myResponse = (HttpWebResponse)myRequest.GetResponse();  
MyXMLdoc = new XmlDocument();  
MyXMLdoc.Load(myResponse.GetResponseStream());