jero
2008-03-18 22:40:12 UTC
Bonjour,
D'abord je ne suis pas vraiment un PHPiste ; mon cOEur de compétence
est MySQL et tant que possible je fais un maximum de chose par ce
biais là....
Voici mon problème : je dois transmettre des données de ma base via un
webService pour lequel je dispose d'une adresse WSDL.
La méthode prévois que je dois transmettre 3 paramètres dans l'ordre
suivant :
1 (string) le contenu de ma requête au format XML
2 (string) login
3 (string) password
Comme je préfère utiliser MySQL que PHP j'ai écris une fonction MYSQL
qui me retourne directement le document XML formaté comme il se doit.
J'ai testé la récupération de ce string/XML via PHP cela fonctionne
très bien.
En revanche lorsque je lance ma requête SOAP en appelant la méthode
voulue il semblerait que mon XML soit totalement invisible. En effet à
l'affichage de __getLastRequest() n'apparaissent que les valeurs du
login et du password, transmises respectivement en paramètre 1 et 2...
Sachant que la chaine générée par ma fonction MySQL commence par un
entête XML, je me suis dis que le problème venait sans doute d'une
interférence du aux "<?" et "?>" de cet entête. J'ai essayé divers
fonctions d'encodage sur ma chaine XML (htmlentities et autres
htmlspecialchars) mais sans succès.
Je viens donc voir par chez vous si quelqu'un pourrait me tuyauter.
Ci dessous un extrait de mon code afin de vous éclairer d'avantage sur
ma situation. d'avance merci.
// l'appel de la fonction Mysql
$sqlReq= 'SELECT XML_wsMethode_byRef(\''.$clone.'\') as xmlReturn';
$sqlRes = mysql_query($sqlReq)or die("Problem...SELECT
XML_SetCustomReference_byRef");
$result = mysql_fetch_object($sqlRes);
// recuperation de ma chaine XML dans un variable
$XMLRequest = $result->xmlReturn;
// creation de mon client SOAP
$client = new SoapClient("http://...../webService.asmx?
WSDL",array('trace' => 1));
//lancement de la methode avec les 3 parametres string_XML,
string_login, string_password
$client->wsMethode($XMLRequest ,$login,$password);
echo $client->__getLastRequest();
Et ici une transcription de ce que me retourne $client-
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/
envelope/" xmlns:ns1="http://.../webService">
<SOAP-ENV:Body>
<ns1:wsMethode/>
<param1>string_login</param1>
<param2>string_password</param2>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Encore merci d'avoir pris le temps de lire, j'espère que vous pourrez
m'aider ?
Jérôme
D'abord je ne suis pas vraiment un PHPiste ; mon cOEur de compétence
est MySQL et tant que possible je fais un maximum de chose par ce
biais là....
Voici mon problème : je dois transmettre des données de ma base via un
webService pour lequel je dispose d'une adresse WSDL.
La méthode prévois que je dois transmettre 3 paramètres dans l'ordre
suivant :
1 (string) le contenu de ma requête au format XML
2 (string) login
3 (string) password
Comme je préfère utiliser MySQL que PHP j'ai écris une fonction MYSQL
qui me retourne directement le document XML formaté comme il se doit.
J'ai testé la récupération de ce string/XML via PHP cela fonctionne
très bien.
En revanche lorsque je lance ma requête SOAP en appelant la méthode
voulue il semblerait que mon XML soit totalement invisible. En effet à
l'affichage de __getLastRequest() n'apparaissent que les valeurs du
login et du password, transmises respectivement en paramètre 1 et 2...
Sachant que la chaine générée par ma fonction MySQL commence par un
entête XML, je me suis dis que le problème venait sans doute d'une
interférence du aux "<?" et "?>" de cet entête. J'ai essayé divers
fonctions d'encodage sur ma chaine XML (htmlentities et autres
htmlspecialchars) mais sans succès.
Je viens donc voir par chez vous si quelqu'un pourrait me tuyauter.
Ci dessous un extrait de mon code afin de vous éclairer d'avantage sur
ma situation. d'avance merci.
// l'appel de la fonction Mysql
$sqlReq= 'SELECT XML_wsMethode_byRef(\''.$clone.'\') as xmlReturn';
$sqlRes = mysql_query($sqlReq)or die("Problem...SELECT
XML_SetCustomReference_byRef");
$result = mysql_fetch_object($sqlRes);
// recuperation de ma chaine XML dans un variable
$XMLRequest = $result->xmlReturn;
// creation de mon client SOAP
$client = new SoapClient("http://...../webService.asmx?
WSDL",array('trace' => 1));
//lancement de la methode avec les 3 parametres string_XML,
string_login, string_password
$client->wsMethode($XMLRequest ,$login,$password);
echo $client->__getLastRequest();
Et ici une transcription de ce que me retourne $client-
__getLastRequest()
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/
envelope/" xmlns:ns1="http://.../webService">
<SOAP-ENV:Body>
<ns1:wsMethode/>
<param1>string_login</param1>
<param2>string_password</param2>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Encore merci d'avoir pris le temps de lire, j'espère que vous pourrez
m'aider ?
Jérôme