begin process at 2012 05 30 23:30:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Réseau & Internet

 > 

Autre

 > 

Envoi et reception de fichier XML sur un serveur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales