Google Weather Api в ASP.Net - PullRequest
       30

Google Weather Api в ASP.Net

1 голос
/ 04 апреля 2011

Я использую 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 ]

3 голосов
/ 05 апреля 2011

По какой-то причине 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();
2 голосов
/ 29 июня 2011

Вы можете сделать это, используя 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());  
...