Google Weather Api в ASP.Net
Я использую API погоды на своей странице ASP.Net.
Если я добавлю язык (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 ответа
Решение
По какой-то причине 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();
Вы можете сделать это с помощью 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());