2012-06-28 2 views
0

J'ai une requête SOAP qui fonctionne depuis mon site Web vers une API .net. Pour une raison quelconque, PHP semble avoir des problèmes d'analyse de la réponse.Interaction avec les services SOAP .net en utilisant PHP

Lorsque je rejette la réponse, la plupart des données extraites se trouvent dans une chaîne appelée "any". Cette chaîne semble être une copie du XML renvoyé. C'est trop gros pour coller dans cette question, mais vous pouvez voir le contenu de la réponse ici: http://pastie.org/4165973

J'ai essayé de charger cette chaîne dans simplexml, mais j'obtiens une erreur: "Contenu supplémentaire à la fin du document".

Est-ce que quelqu'un a connu des problèmes similaires? Comment puis-je analyser cette réponse?

J'ai enregistré __getLastResponse() dans un fichier pour obtenir une sortie aussi brute que possible. Nouveau XML est ici http://pastebin.com/3ZtjDbjw

Répondre

1

Le XML semble mal formé. <ShipToAddress> est probablement incorrect, mais il contient CDATA qui pourrait être ce qui brise l'analyseur.

Dans tous les cas, exécutez-le via un XML linter (http://xmlsoft.org/xmllint.html) et voyez ce qu'il a à dire. Cependant, je suppose que l'API source est soit craché à tort ou vous faites quelque chose avant de l'imprimer, donc ce que vous avez fourni n'est pas réellement la sortie en direct.

+0

J'essaye de valider la réponse avec xmllint, mais je ne suis pas familier avec elle. J'obtiens des erreurs parce qu'il n'y a pas de dtd définie, mais je pense que le schéma est défini dans le document. Connaissez-vous la bonne commande? – MrGlass

+0

Désolé, le mieux est de consulter la documentation de XMLLint, ou de chercher un autre linter – Mike