Aller au contenu

comment dialoguer avec un serveur en xml


genmin

Sujets conseillés

Bonjour, voilà je suis novice en xml et me débrouille un peu en php, je cherche le moyen le plus simple possible d'envoyer un fichier xml à un serveur et récupérer la réponse de celui-ci, et tout ca en php si possible car je connais un peu ce language de programmation.

J'ai lu pas mal de chose comme simple_xml mais qui, si je ne me trompe pas ne permet que d'interpréter un fichier xml, j'en aurai donc besoin par la suite pour interpréter la réponse récupérée. Mais mal heureusement rien de bien concret pour l'envois et surtout le retour de fichier xml

Merci d'avance

Genmin

Lien vers le commentaire
Partager sur d’autres sites

Le fichier xml dont tu parles est une chose, qui n'est pas à confondre avec la méthode utilisée pour l'envoyer.

Pour envoyer/recevoir un fichier xml, tu as plusieurs solutions, à toi de choisir laquelle te convient le mieux.

Pour que l'on puisse te répondre, il nous faudrait en savoir un peu plus, ne serait-ce pour savoir ce qui t'attend, de l'autre coté, sur l'autre serveur.

C'est la facon dont l'autre serveur est configuré pour recevoir ton fichier qui va très probablement conditionner ton envoi d'xml. Idem pour le retour.

Nico.

Lien vers le commentaire
Partager sur d’autres sites

merci pour cette réponse qui éclaire un peu plus ma lanterne.

Mon projet est enfaite de réaliser une passerelle entre oscommerce et le serveur d'ups pour facilité la saisie des cordonnées clients pour préparer mes livraisons. Mon fichier XML contiendra donc les cordonnées pour une livraisons (nom adresse etc..) et la réponse du serveur sera une étiquette à imprimer à coller sur mes colis. J'ai donc regardé la notice que ups ma fait passer, mais je ne vois nul par le moyen de communication utilisé, il ne parle que de la syntaxe du fichier XML :sick:

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Pour respecter la norme, il faut aussi :

* envoyer du contenu en XML bien sûr

* envoyer le type mime 'text/xml'

* ajouter un entête 'Content-length' qui contient la taille (en caractères) de la réponse

Mais ça marchera bien aussi si tu ne fais qu'envoyer des données formatées en XML, le reste c'est du perfectionnisme ;)

Lien vers le commentaire
Partager sur d’autres sites

merci pour toute ces réponses. :thumbsup:

voici la documentation UPS : http://bebedirect.com/Ship-WW-XML.pdf

vous serez t'il possible de me donner quelque nom de methode utilisé pour l'envoi de fichier xml, comme ca j'aurai l'air moin bete quand j'appelerai ups pour leur demander laquelle utiliser :blush:

Encore merci.

Lien vers le commentaire
Partager sur d’autres sites

pages 22 et suivantes :

Il te faut envoyer les données XML encodées en base64, via HTTP, par méthode POST.

Après, t'as 300 pages d'explications sur les éléments à envoyer, ceux que tu vas recevoir, etc..

Pour infos, j'ai rien trouvé sur le php dans la doc.. Y'a du java, mais pas de php :(

Essaie de trouver sur internet si qqun s'est déjà lancé là dedans, sinon ca te fait un travail de fou :/

Lien vers le commentaire
Partager sur d’autres sites

page 26 : An XML request is sent to an interface via the HTTP POST method...

Je ne connais pas php mais en techno MS j'utiliserais l'objet COM : XMLHTTP pour l'envoi du fichier XML respectant le format UPS et la réception du message retour.

peut-être existe-t-il un équivalent à XMLHTTP en php.

Tu peux faire des recherches sur l'implémentation de SOAP en php, ça doit bien exister car c'est un besoin basique en e-commerce.

Lien vers le commentaire
Partager sur d’autres sites

merci pour votre aide, je me mets à la recherche d'un équivalent de XMLHTTP pour php, je ne dois quand meme pas etre le seul à vouloir faire un truc pareil !!

Lien vers le commentaire
Partager sur d’autres sites

petite question idiote !!

les échange en POST ne sont ils pas limité à 256 caractères ?

Si c'est le cas, comme y faire passer un fichier XML de plusieur 10ène de lignes ?

Lien vers le commentaire
Partager sur d’autres sites

les échange en POST ne sont ils pas limité à 256 caractères ?

Si c'était le cas il n'y aura pas beaucoup de formulaires sur les sites internet !

Toutefois il existe des problèmes de taille en effet, pour l'envoi de fichiers XML en http.

Selon ma modeste expérience il vaut mieux faire une boucle pour 10 envois de 500 lignes qu'un seul envoi de 5000.

Je suppose que ça dépend aussi de la techno utilisée

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

Pour les fichiers xml envoyés par http, si tu es le seul à utiliser tes fichiers, penses bien à les compresser puis décompresser à l'arriver. Tu gagnes du temps, de la bande passante. Un xml zippé (ou bzippé) est bien plus léger qu'un xml non compressé ! Enfin, je le redis, tout dépend aussi qui utilise ton fichier ... si c'est toi, ça va, si c'est des externes, ça peut être plus problématique.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour votre aide, j'ai enfin réussi à faire ce que je voulai. Voici la parti du code qui ma posé tant de problème.

        $ch = curl_init(); /// initialize a cURL session
curl_setopt ($ch, CURLOPT_URL,$urlShipConfirm); /// set the post-to url (do not include the ?query+string here!)
curl_setopt ($ch, CURLOPT_HEADER, 0); /// Header control
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);/// Use this to prevent PHP from verifying the host (later versions of PHP including 5)
// If the script you were using with cURL has stopped working. Likely adding the line above will solve it.
curl_setopt($ch, CURLOPT_POST, 1); /// tell it to make a POST, not a GET
curl_setopt($ch, CURLOPT_POSTFIELDS, $upsXML); /// put the query string here starting with "?"
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); /// This allows the output to be set into a variable $xyz
$upsResponse = curl_exec ($ch); /// execute the curl session and return the output to a variable $xyz
curl_close ($ch); /// close the curl session

A+

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...