2011-04-04 2 views
1

J'utilise l'API météo sur ma page ASP.Net.Google Météo API dans ASP.Net

Si j'ajoute la langue (hl) à la requête, j'obtiendrai cette erreur: "Caractère invalide dans le codage donné Ligne 1, position 526.".
Cela fonctionne sans le paramètre get pour la langue, mais je veux localiser la sortie.

Voici mon code avec l'erreur dans la deuxième ligne:

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

cela fonctionne:

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

Toute idée?

+0

** L'API Google météo a été fermée en 2012 ** - > http://stackoverflow.com/questions/12145820/google-weather-api-gone/35943521 –

Répondre

3

Pour une raison quelconque, Google n'est pas un encodage UTF de la sortie. Voici un moyen pour vous de compenser:

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

Vous pouvez le faire en utilisant HttpWebRequest en place de WebClient comme comme ci-dessous:

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());