11
votes

Consommer un service Web de repos XML

J'essaie de consommer le service Web suivant http://ipinfodb.com/ip_location_api.php Ce service Web renvoie une réponse XML, le code ci-dessous obtient la réponse XML, mais en quelque sorte lors de la phase des valeurs de la réponse XML, elle ne fonctionne pas.

Qu'est-ce qui ne va pas avec mon code? xxx

}

edit: il s'agit de la réponse XML renvoyée xxx


0 commentaires

4 Réponses :


14
votes

J'utilise la même API, je charge la réponse XML dans un xdocument et analyse par exemple xxx

ce que vous devriez aussi faire est d'introduire une classe personnalisée, par exemple GéolocessionInfo et enveloppez votre code dans une fonction par exemple. Getgeolocation (String IP) Au lieu d'écrire les informations à la fenêtre de la console, vous pouvez remplir et renvoyer une instance de cette classe.


0 commentaires

16
votes

Ma solution serait:

  • exécutez le xsd.exe code> utilitaire de votre résultat xml deux fois pour le convertir en une classe XSD (première étape) et une classe C # (deuxième étape), cela vous donnerait une classe C # réponse code> p> li>

  • Ensuite, vous pouvez facilement désérialiser la réponse dans une instance de cette classe: p>

    HttpWebRequest request = WebRequest.Create("http://api.ipinfodb.com/v2/ip_query.php?key=--yourkey--&ip=74.125.45.100&timezone=true") as HttpWebRequest;
    
    XmlSerializer ser = new XmlSerializer(typeof(Response));
    
    WebResponse response = request.GetResponse();
    var result = ser.Deserialize(response.GetResponseStream());
    


0 commentaires

0
votes

Je pense que vous devez utiliser _xtr.movetocontent (); Méthode avant d'utiliser la méthode de lecture .. Voir si cela fonctionne


0 commentaires

2
votes

Vous supposez que le premier noeud sera un nœud root, mais ce n'est pas correct. Vous aurez xmldeclaration d'abord et qui peut être suivi par WhitSpace nœuds. Donc, vous devriez probablement structurer votre code quelque chose comme xxx

mais dit tout cela, je préférerais personnellement créer une réponse XSD (mieux si le service Web le fournit) et générer des classes en dehors (en utilisant XSD. .exe ou xsd2code ) pour Serialize / Déserialise IT.


0 commentaires