Utiliser des webservices avec nusoap

Eléphant du PHP | 159 Messages

17 mars 2006, 11:52

Bonjour,

- je développe un site de Ecommerce (PHP) fonctionnant en parallele avec un logiciel de gestion (WinDEV).
- Des procédures pour les stocks et autres sont toutes faites sur le logiciel, j'ai créé des Webservices grace a WinDEV et j'aimerais pouvoir les utiliser grace a un serveur SOAP
-j'ai configuré mon apache, j'ai téléchargé le script nusoap.php
-ensuite j'ai placé mon fichier XML dans WWW comme il etait indiqué
-j'ai ensuite réalisé la page suivante, pour tester simplement avec la procédure sNombreEnLettre qui apres avoir recupéré un nombre l'ecrit en tout lettre voici donc mon code :
<?
$chiffre=20;
require ('nusoap.php');
$s = new soap_server;
$s -> register('sNombreEnLettre');

function sNombreEnLettre($chiffre){
   if (empty($chiffre))
      return new_soap_fault("Client", "Pas d entree", "'chiffre' doit etre rempli");
   }
$s -> service($HTTP_RAW_POST_DATA);
?>

-Mais cela m'a affiché les lignes suivantes :

Code : Tout sélectionner

Notice: Undefined variable: HTTP_RAW_POST_DATA in c:\easyphp\www\testecom\index.php on line 11 Notice: Undefined index: content-type in c:\easyphp\www\testecom\nusoap.php on line 3813 Notice: Undefined index: content-type in c:\easyphp\www\testecom\nusoap.php on line 3814 Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\testecom\index.php:11) in c:\easyphp\www\testecom\nusoap.php on line 3778 Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\testecom\index.php:11) in c:\easyphp\www\testecom\nusoap.php on line 3778 Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\testecom\index.php:11) in c:\easyphp\www\testecom\nusoap.php on line 3778 Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\testecom\index.php:11) in c:\easyphp\www\testecom\nusoap.php on line 3778 Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\testecom\index.php:11) in c:\easyphp\www\testecom\nusoap.php on line 3778 Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\testecom\index.php:11) in c:\easyphp\www\testecom\nusoap.php on line 3778 SOAP-ENV:Clientmethod '' not defined in service

Si vous pouviez m'orienter, merci d'avance

Eléphant du PHP | 159 Messages

30 mars 2006, 08:20

finalement j'ai créé un webservice avec windev
il fonctionne mais il m'affiche ceci quand je l'execute :

Code : Tout sélectionner

<soap:Envelope> <soap:Body> <gINSERT_DOCUMENT_Domaine_2Response> <gINSERT_DOCUMENT_Domaine_2Result xsi:type="ns2:int">518</gINSERT_DOCUMENT_Domaine_2Result> </gINSERT_DOCUMENT_Domaine_2Response> </soap:Body> </soap:Envelope>
518 est le numero d'ID que je veux récupérer, mais je ne vois pas comment, voila mon code qui lance le webservice :
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function construitxml()
{
   var requete;
   requete="<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"><soap:body>";
   requete = requete + "<gINSERT_DOCUMENT_Domaine_2 xmlns=\"WEBLyneade\">";
   
   requete = requete + "<sTypeDoc xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sTypeDoc.value;
   requete = requete + "</sTypeDoc>";
   
   requete = requete + "<sCodeEts xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sCodeEts.value;
   requete = requete + "</sCodeEts>";
   
   requete = requete + "<sSouche xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sSouche.value;
   requete = requete + "</sSouche>";
   
   requete = requete + "<sCodeDepot xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sCodeDepot.value;
   requete = requete + "</sCodeDepot>";
   
   requete = requete + "<sCodeTiers xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sCodeTiers.value;
   requete = requete + "</sCodeTiers>";
   
   requete = requete + "<sDate xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sDate.value;
   requete = requete + "</sDate>";
   
   requete = requete + "<sCodeRepresentant xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sCodeRepresentant.value;
   requete = requete + "</sCodeRepresentant>";
   
   requete = requete + "<sNumeroDocument xsd:type=\"xsd:string\">";
   requete = requete + document.valeur.sNumeroDocument.value;
   requete = requete + "</sNumeroDocument>";
   
   requete = requete + "</gINSERT_DOCUMENT_Domaine_2></soap:body><soap:Envelope>";
   document.xmlform.xml.value=requete;
   document.xmlform.submit();
}
</SCRIPT>
</HEAD>
<BODY>
<?
$p1=$_GET['sTypeDoc'];
$p2=$_GET['sCodeEts'];
$p3=$_GET['sSouche'];
$p4=$_GET['sCodeDepot'];
$p5=$_GET['sCodeTiers'];
$p6=$_GET['sDate'];
$p7=$_GET['sCodeRepresentant'];
$p8='';
?>
<form name="valeur" id="valeur">
<TABLE>
<TR>
<TD>Param&egrave;tre</TD>
<TD>Valeur</TD>
</TR>
 
<TR>
<TD>sTypeDoc:</TD>
<TD><INPUT size=50 name="sTypeDoc" value="<? echo $p1;?>"></TD>
</TR>

<TR>
<TD>sCodeEts:</TD>
<TD><INPUT class=frmInput size=50 name="sCodeEts" value="<? echo $p2;?>"></TD>
</TR>

<TR>
<TD>sSouche:</TD>
<TD><INPUT size=50 name="sSouche" value="<? echo $p3;?>"></TD>
</TR>

<TR>
<TD>sCodeDepot:</TD>
<TD><INPUT size=50 name="sCodeDepot" value="<? echo $p4;?>"></TD>
</TR>

<TR>
<TD>sCodeTiers:</TD>
<TD><INPUT size=50 name="sCodeTiers" value="<? echo $p5;?>"></TD>
</TR>

<TR>
<TD>sDate:</TD>
<TD><INPUT size=50 name="sDate" value="<? echo $p6;?>"></TD>
</TR>

<TR>
<TD>sCodeRepresentant:</TD>
<TD><INPUT size=50 name="sCodeRepresentant" value="<? echo $p7;?>"></TD>
</TR>

<TR>
<TD>sNumeroDocument:</TD>
<TD><INPUT size=50 name="sNumeroDocument" value="<? echo $p8;?>"></TD>
</TR>

<TR>
<TD></TD>
<TD align=right><INPUT class=button type=button value=Test onclick="construitxml()";></TD>
</TR>
</TABLE>
</form>
 
<form action="http://IPDUSERVEUR/WEBLyneade.soap" method=post name="xmlform" id="xmlform" target="_blank">
<input type="hidden" value=""  name="xml" id="xml">
</form>
</BODY>
</HTML>

Eléphant du PHP | 159 Messages

30 mars 2006, 09:00

j'ai aussi essayé ca mais aucun affichage, sachant que le .wsdl etait un .xml a la base que j'ai renommé :
<?php
$client = SoapClient("WEBLyneade.wsdl", array('trace' => 1));
$result = $client->sNombreEnLettre();
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
?>

Eléphant du PHP | 159 Messages

30 mars 2006, 11:55

sinon dans mon fichier XML qui contient toutes les fonctions, j'ai gInsert_Document_Domaine_2 qui insere une commande et la meme avec response me retourne l'ID, mais je ne vois pas comment le recuperer quelque part

Code : Tout sélectionner

<xsd:element name="gINSERT_DOCUMENT_Domaine_2"> <xsd:complexType> <xsd:sequence> <xsd:element name="sTypeDoc" type="xsd:string"/> <xsd:element name="sCodeEts" type="xsd:string"/> <xsd:element name="sSouche" type="xsd:string"/> <xsd:element name="sCodeDepot" type="xsd:string"/> <xsd:element name="sCodeTiers" type="xsd:string"/> <xsd:element name="sDate" type="xsd:string"/> <xsd:element name="sCodeRepresentant" type="xsd:string"/> <xsd:element name="sNumeroDocument" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="gINSERT_DOCUMENT_Domaine_2Response"> <xsd:complexType> <xsd:sequence> <xsd:element name="Result" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element>