1

我在我的 ASP.Net 页面中使用天气 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 );

任何的想法?

4

2 回答 2

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();
于 2011-04-04T21:12:09.713 回答
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());  
于 2011-06-29T12:12:07.133 回答