我在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 );
有什么想法吗?
答案 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());