2010-11-17 9 views
0

Je travaille sur un système qui doit s'intégrer à un système externe (commercial). Sur mon site, j'ai quelques informations, et cela doit ensuite être vérifié par rapport aux enregistrements du système externe. Ceci est fait en postant une requête XML.Commande HTTP Post avec requête XML (PHP)

Je n'arrive pas à comprendre leur documentation. Ils m'ont donné un exemple de xml, mais je ne sais pas quoi en faire. Quelqu'un peut-il aider ?! Je ne peux pas trouver beaucoup en ligne qui me dit quoi faire. J'utilise PHP, et la requête doit être postée via HTTPS. Le xml m'a donné est (à peu près - ne peut pas donner les détails en raison de la sécurité):

<?xml version="1.0" standalone="no" ?> 
<request> 
    <request_header interface_version_no="0.2" dtd_version_no="0.2"> 
    <client_reference>Test Client</client_reference> 
    </request_header> 
    <service_request id="1"> 
    <session_service> 
     <logon_request domain_id="******" user_id="******" password="******"/> 
    </session_service> 
    </service_request> 
</request> 

Le code ci-dessus devrait me connecter à leur système. Donc, mes questions sont:

  1. Que puis-je réellement faire avec cela? Comment puis-je en faire une demande POST? Que dois-je faire avec la réponse (qui est aussi xml)?
  2. J'ai analysé xml avant (en utilisant XSLT), mais c'était pour l'afficher ... existe-t-il un moyen standard de le faire en PHP?

Merci! Toute aide est appréciée. Je ne trouve pas grand-chose en ligne (enfin, je peux trouver des charges, mais rien ne semble être spécifique à ce que je recherche, donc je suis confus), donc même les liens vers les pages d'aide appropriées seraient géniaux .

Répondre

3

L'envoi de requête HTTP, en PHP, se fait généralement en utilisant le curl extension, qui fournit beaucoup de fonctionnalités. Voir par exemple la page de curl_setopt(), qui liste toutes les options qui peuvent être utilisées avec curl - il y en a quelques unes qui devraient vous aider, par exemple avec les trucs POSTing.


Une autre solution, si allow_url_fopen est activé sur votre serveur, serait d'utiliser la fonctionnalité de flux de PHP.

Vous pourriez l'utiliser la fonction file_get_contents(), offrant des options de contexte personnalisés - voir cette page: HTTP context options(l'exemple n ° 1 est intéressant, dans votre cas ;-))


Si vous obtenez XML En réponse, vous devrez analyser ce résultat.

Ceci est généralement fait, en PHP, en utilisant soit DOMDocument, si vous avez besoin de modifier ou de manipuler votre XML beaucoup ... ou avec SimpleXML si vous avez juste besoin de lire le XML et d'en extraire des données.
Ici, vous aurez probablement besoin d'utiliser la fonction simplexml_load_string ;-)