Accueil > Forum > > > > Envoi et reception de fichier XML sur un serveur
Envoi et reception de fichier XML sur un serveur
lundi 22 février 2010 à 14:34:02 |
Envoi et reception de fichier XML sur un serveur

j3r3m067
|
Bonjour à tous,
je dois envoyer un fichier XML sur un serveur distant en HTTP/POST, en focntion de la réponse du serveur je dois répondre un autre fichier XML.
Mon problème c'est que je sais absolument pas comment faire... Quelqu'un a une idée?
Merci d'avance
|
|
lundi 22 février 2010 à 22:21:03 |
Re : Envoi et reception de fichier XML sur un serveur

gibozsec
|
Bonjour,
Pour envoyer ton fichier XML en post, tu peux utiliser la bibliothèque httpClient qui fonctionne très bien (http://scripts.incutio.com/httpclient/). Vois sur le site pour savoir comment l'utiliser, ce n'est pas bien compliqué mais tu peux poser tes questions ici si tu as des problèmes.
Est-ce que ça répond à ta question ?
Grrrrrrrrrrr
|
|
mardi 23 février 2010 à 10:24:20 |
Re : Envoi et reception de fichier XML sur un serveur

j3r3m067
|
je sais pas quoi mettre dans post:
Code PHP :
$client = new HttpClient('ws-test.truc.com/');
$client->setDebug(true);
if (!$client->post(???)) //quoi mettre dedans pour envoyer mon fichier XML
{
echo '<p>Request failed!</p>';
} else {
echo '<p> '.strlen($client->getContent()).' bytes.</p>';
}
et je comprend pas comment faire pour récupérer le fichier que le serveur va me renvoyer.
si tu peux m'aider, se serai sympa
|
|
mardi 23 février 2010 à 10:30:41 |
Re : Envoi et reception de fichier XML sur un serveur

j3r3m067
|
sinon je viens d'essayer:
Code PHP :
function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
echo do_post_request('ws-test.truc.com/','XML/Vidage_CRLF.cml');
et j'ai en msg d'erreur:
Code : Fatal error: Uncaught exception 'Exception' with message 'Problem with ws-test.truc.com/, ' in D:\www\diagdirect\client.php:169 Stack trace: #0 D:\www\diagdirect\client.php(178): do_post_request('ws-test.truc.co...', 'XML/Vidage_CRLF...') #1 {main} thrown in D:\www\diagdirect\client.php on line 169
et
Code :
Fatal error: Uncaught exception 'Exception' with message 'Problem reading data from ws-test.truc.com/, ' in D:\www\diagdirect\client.php:173 Stack trace: #0 D:\www\diagdirect\client.php(178): do_post_request('ws-test.truc.co...', 'XML/Vidage_CRLF...') #1 {main} thrown in D:\www\diagdirect\client.php on line 173
|
|
mardi 23 février 2010 à 10:31:12 |
Re : Envoi et reception de fichier XML sur un serveur

j3r3m067
|
quelle est la méthode la plus simple et comment la mettre en place?
|
|
mercredi 24 février 2010 à 20:38:18 |
Re : Envoi et reception de fichier XML sur un serveur

gibozsec
|
Bonjour,
Désolé pour la réponse tardive, je n'avais pas vu tes messages.
Pour utiliser HttpClient, c'est pas compliqué :
1) Créer une instance de l'objet en lui passant en paramètre le serveur et optionnellement le port. Pour le port, si tu veux faire une requête https tu devra le modifier, par défaut c'est le port 80.
2) Appeler la fonction post() comme tu l'as fait. Le premier paramètre est le chemin du fichier à appeller sur le serveur (l'url sans le nom de domaine). Le second paramètre est un tableau qui représente les paramètres à passer en post (les clés sont les nom des variables et les valeurs sont les valeurs à passer).
3) Contrôler que tout s'est bien passer. Si on reçoit un code 200 tout va bien, sinon c'est une erreur. La fonction getStatus() retourne le code.
4) Lire ce qui a été renvoyé par le serveur avec la fonction getContent(). Dans ton cas, je suppose que le webservice que tu veux appeler enverra directement le XML. Tu n'as donc qu'à lire le retour.
Un petit exemple pour que tu vois comment faire :
<?php
require_once('HttpClient.class.php');
$xml = '<?xml version="1.0" encoding="UTF-8"?><root><element>Test</element></root>';
$client = new HttpClient('localhost');
$client->setDebug(true);
$client->post('/tests/formulaire.php',array('xml'=>urlencode($xml)));
if(200 == $client->getStatus()){
echo 'XML Reçu du serveur : <br /><br /><xmp>'.$client->getContent().'</xmp>';
}
else{
echo 'erreur de réception du XML : '.$client->getStatus().' ('.$client->getError().')';
}
?>
Grrrrrrrrrrr
|
|
lundi 1 mars 2010 à 15:06:49 |
Re : Envoi et reception de fichier XML sur un serveur

j3r3m067
|
salut
désolé pour le retard malade
je viens d'essayé ton truc mais marche pas, j'ai toujours:
j'ai une erreur 400
voila mon morceau de code:
Code PHP :$xml = new SimpleXMLElement('XML/Vidage_CRLF.xml',NULL,true);
$client = new HttpClient(ip_serveur/');
$client->setDebug(true);
if (!$client->post('index.php',$xml)) {
echo '<p>Request failed!</p>';
} else {
echo '<p> '.strlen($client->getContent()).' bytes.</p>';
}
if(200 == $client->getStatus()){
echo 'XML Reçu du serveur : <br /><br /><xmp>'.$client->getContent().'</xmp>';
}
else{
echo 'erreur de réception du XML : '.$client->getStatus().' ('.$client->getError().')';
}
le serveur sur lequel je dois envoyer le fichier à le message suivant sur ça page d'acceuil:
Under Construction
The site you were trying to reach does not currently have a default page. It may be in the process of being upgraded.
--------------------------------------------------------------------------------
Please try this site again later. If you still experience the problem, try contacting the Web site administrator.
une idéee?
|
|
lundi 1 mars 2010 à 18:28:13 |
Re : Envoi et reception de fichier XML sur un serveur

gibozsec
|
Bonjour,
Je vois plusieurs problèmes dans ton code.
Tout d'abord, pourquoi utiliser SimpleXMLElement alors que ce n'est pas utile ? Du XML peut très bien être utilisé sous forme de texte. La fonction file_get_content() ferait tout aussi bien l'affaire.
Ensuite tu appelles la fonction post() avec un objet SimpleXMLElement comme 2eme paramètre. Dans l'exemple que j'ai donné, je t'ai montré qu'il fallait un tableau (voir point 2 de mon message précédent). Attention toutefois, ce paramètre ne s'appelle pas forcement 'xml', vois avec le fournisseur du webservice si c'est bien ça.
Troisième point, tu testes la réussite ou l'échec de la fonction post() (ce qui est très bien) mais tu essaye ensuite d'avoir le code même si post() n'a pas marchée. Ton test sur le code 200 devrait se faire dans le 1er if.
Enfin, le fait que le serveur affiche un message d'erreur n'est pas forcément une mauvaise nouvelle : il se peut qu'il s'affiche si aucun XML n'est passé par exemple. Mais ici, vu le message, es-tu certain que le service existe bel et bien et que l'url est bonne ?
Est ce que tu as une documentation du service que tu veux utiliser ? Ca serait plus simple avec ça.
Grrrrrrrrrrr
|
|
mardi 2 mars 2010 à 11:55:29 |
Re : Envoi et reception de fichier XML sur un serveur

j3r3m067
|
je viens de contacter le fournisseur du webservice, concernant le message d'erreur et le code retour 400, il m'a dis que pour le moment le service n'est pas accessible en externe pour le moment.
pour la doc, j'ai rien qui explique le fonctionnement de mon "serveur de post", la seul donc que j'ai me dis comment fonctionne les différents XML que j'envoie ou que je receptionne.
je vais donc attendre que le serveur soit opérationnel pour l'exterieure et je reposterai si besoin merci
|
|
mardi 2 mars 2010 à 20:24:06 |
Re : Envoi et reception de fichier XML sur un serveur

gibozsec
|
A ton service.
N'hésite pas si tu as des problèmes quand ça fonctionne.
Grrrrrrrrrrr
|
|
Cette discussion est classée dans : fichier, serveur, envoi, xml, reception
Répondre à ce message
Sujets en rapport avec ce message
URGENT!!!!!!!!Telecharger un fichier depuis le web vers serveur PHP [ par bonbecman ]
Je recherche le moyen de récupérer un fichier sur Internet (www.quelquechose.fr/unfichier.exe) et de le placer sur mon serveur PHP. Il y a bien une so
formulaire et SMTP ? [ par connect ]
heu je suis un peu largé :j'heberge moi meme mon site je voudrai que mon formulaire, une fois remplis soit envoyé par mail à [moi même]... rien de tre
Ouverture de fichiers distants impossible [ par BSide ]
Bonjour,je rencontre un pbl que g du mal à dépatouiller.Voici le topo :- mon appli (un intranet) se trouve sur un serveur A. Elle permet entre autre d
deplacement de fichier [ par dalow17 ]
Bonjour à tous,Je souhaite faire un couper coller d'un fichier d'un poste client sur un serveur.J'ai utilise "move_uploaded_file" mais ça déplace le f
Telecharger un fichier sur un serveur à partir d'un autre serveur. [ par LocalStone ]
Salut à tous. Voilà mon problème : je cherche le moyen de telecharger une image à partir d'un serveur (port 80, par exemple 'http://www.phpcs.com/grap
[HELP] Envoi de fichier [ par PsychoPat ]
Bonjour,Je cherche un moyen d'envoyer des fichiers à mes visiteurs. Je m'explique : les fichiers à envoyer ne se trouvent pas dans l'arborescence du s
Comment envoyer un fichier sur un serveur ? [ par slhuilli ]
Bonjour,Je suis a la recherche d'un bout de code qui puisse valider un formulaire (INSERT sans une base MySQL). Je voudrais que ce code récupère une p
Php et excel ???? [ par Adagyo ]
Salut @ tous,Je cherche un moyen de faire communiquer le contenu d'une base MySQL avec un tableau Excel.J'ai pensé à passer par du XML (je fait une re
Problème d'upload de fichier [ par phenixoiseau ]
phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du
Problème d'upload de fichier [ par phenixoiseau ]
phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|