genmin Posted May 5, 2007 Posted May 5, 2007 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
Anonymus Posted May 10, 2007 Posted May 10, 2007 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.
genmin Posted May 11, 2007 Author Posted May 11, 2007 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 Merci pour votre aide
destroyedlolo Posted May 11, 2007 Posted May 11, 2007 Est-ce qu'il ne parle pas non plus de Rosettanet ?
Anonymus Posted May 12, 2007 Posted May 12, 2007 Le problème, c'est que je n'ai pas la notice ups sous les yeux
Loupilo Posted May 13, 2007 Posted May 13, 2007 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
genmin Posted May 15, 2007 Author Posted May 15, 2007 merci pour toute ces réponses. 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 Encore merci.
Anonymus Posted May 15, 2007 Posted May 15, 2007 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 :/
robinsonvendredi Posted May 16, 2007 Posted May 16, 2007 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.
genmin Posted May 18, 2007 Author Posted May 18, 2007 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 !!
Xethorn Posted May 18, 2007 Posted May 18, 2007 Hello, Tout simplement : http://silent-strength.com/?articles/php/trackbacks. Le système est spécialisé pour les trackbacks, mais l'idée reste la même. Bonne lecture !
genmin Posted May 19, 2007 Author Posted May 19, 2007 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 ?
robinsonvendredi Posted May 19, 2007 Posted May 19, 2007 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
Xethorn Posted June 4, 2007 Posted June 4, 2007 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.
genmin Posted June 4, 2007 Author Posted June 4, 2007 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+
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now