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? p> } p> edit: il s'agit de la réponse XML renvoyée p>
4 Réponses :
J'utilise la même API, je charge la réponse XML dans un xdocument et analyse par exemple ce que vous devriez aussi faire est d'introduire une classe personnalisée, par exemple GéolocessionInfo Code> et enveloppez votre code dans une fonction par exemple. Getgeolocation (String IP) CODE> Au lieu d'écrire les informations à la fenêtre de la console, vous pouvez remplir et renvoyer une instance de cette classe. P> P>
Ma solution serait:
exécutez le Ensuite, vous pouvez facilement désérialiser la réponse dans une instance de cette classe: p>
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>
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());
Je pense que vous devez utiliser _xtr.movetocontent (); Méthode avant d'utiliser la méthode de lecture .. Voir si cela fonctionne p>
Vous supposez que le premier noeud sera un nœud root, mais ce n'est pas correct. Vous aurez 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. P> P> xmldeclaration code> d'abord et qui peut être suivi par WhitSpace code> nœuds. Donc, vous devriez probablement structurer votre code quelque chose comme