Bonjour,
je suis en cours de création d'un webservices (soap)
je me demandais comment je devais faire pour retourner le résultat au format xml à mon client windev
Merci d'avance
Version imprimable
Bonjour,
je suis en cours de création d'un webservices (soap)
je me demandais comment je devais faire pour retourner le résultat au format xml à mon client windev
Merci d'avance
Le PHP ne fait que générer ce qu'il retourne.
Donc header() pour préciser le type de retour (XML dans ton cas) et ensuite suffit de faire du echo pour le XML.
transgohan,
si je comprends bien je fais un
??Code:
1
2
3 header("Content-Type: text/xml"); echo "<id>".$ma_variable."</id>";
Euh pas seulement... Ton echo c'est pas un fichier XML là... :roll:
Te manques l'entête du fichier, ainsi que le premier parent.
en effet ... donc cela devrait fonctionner
Merci pour ton aideCode:
1
2
3
4
5
6 header("Content-Type: text/xml"); $xml = "<?xml version='1.0' encoding='UTF-8'>"; $xml .="<user><id>".$numero".</id>"; $xml .="</user>"; echo $xml;
t’utilises pas SoadServer ?
stealth35,
j'utilise bien soap server, mais j'ai un peu de mal à comprendre le fonctionnement
j'ai fait cela
Mais je ne sais pas si je m'y prends bienCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29class Connexion { /** * Connexion * @param string $login * @param string $pwd * @return string */ function connexion($login, $pwd) { //la fonction me ramène un numéro $xml = "<?xml version='1.0' encoding='UTF-8'?>"; $xml .= "<user><id>".$numero".</id>"; $xml .= "</user>"; } } } $server = new SoapServer("http://localhost/connexion.wsdl"); $server->setClass("Connexion", $xml); $server->handle();
y'a pas de XML a faire, les classes sont en PHP
donc si je comprends bien je fais juste mon traitement dans ma fonction
et ensuite je fais
$numero correspondant à ma valeur que je souhaite retournerCode:
1
2
3
4 $server = new SoapServer("http://localhost/connexion.wsdl"); $server->setClass("Connexion", $numero); $server->handle();
merci
waxx
tu fais tes classes comme tu les ferais en PHP, t'as pas besoin de mettre le paramètre args (regarde bien la doc de setClass)
quand le client fera :
la méthode connexion sera appeler avec les arguments du clientCode:$client->connexion($login, $password);
si t'as un exemple je suis preneur
;)
il doit y avoir un truc que je ne capte pas
je ne suis pas dans ma partie client mais serveur
le serveur est en php et le client sera en windev (;-[ j'ai des contraintes)
au début j'avais fait cela (cf ci-dessous)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <? class Connexion { /** * Connexion * @param string $login * @param string $pwd * @return string */ function connexion($login, $pwd) { ..... //traitement de ma requete return $obj['numero']; } } } $server = new SoapServer("http://localhost/connexion.wsdl"); $server->setClass("Connexion"); $server->handle(); ?>
j'avais fait un client vite fait en php pour voir le retour, mais je ne l'avais pas en xml
est ce qu'il y a quelque chose que je loupe coté serveurCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $client = new SoapClient( 'http://localhost/connexion.wsdl', array( 'wsdl_cache' => 0, 'trace' => 1 ) ); try { $con = $client->connexion('nom','mdp'); echo $con; }
Waxx
dans ton WSDL t'as bien l'adresse du serveur ?
ps : c'est <?php pas <?
Oui dans mon wsdl j'ai bien l'adresse de mon serveur
et pour le fichier connexion.php, j'ai le code de mon soap_serverCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45<?xml version='1.0' encoding='UTF-8'?> <definitions name="server" targetNamespace="urn:server" xmlns:typens="urn:server" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="connexion"> <part name="login" type="xsd:string"/> <part name="pwd" type="xsd:string"/> </message> <message name="connexionResponse"> <part name="connexionReturn" type="xsd:string"/> </message> <portType name="ConnexionPortType"> <operation name="connexion"> <documentation> Connexion </documentation> <input message="typens:connexion"/> <output message="typens:connexionResponse"/> </operation> </portType> <binding name="ConnexionBinding" type="typens:ConnexionPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="connexion"> <soap:operation soapAction="urn:ConnexionAction" /> <input> <soap:body namespace="urn:server" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body namespace="urn:server" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> </binding> <service name="serverService"> <port name="ConnexionPort" binding="typens:ConnexionBinding"> <soap:address location="http://localhost/connexion.php"/> </port> </service> </definitions>
[pour le ps merci erreur en le copiant à la main]
merci
quelle est l'erreur coté client ?
je n'ai pas d'erreur coté client
mais j'ai juste le numéro qui s'affiche, alors que je devrais avoir un xml pour pouvoir le parser ensuite
ok, merci pour toutes ces précisions
mais dans ce cas pourquoi mon client windev (je m'y mets juste à ce langage)
me dit que ce n'est pas une enveloppe soap
bizarre
ton serveur est visiblement correct, je te conseil plus d'aller sur le forum de windev pour voir ce qu'il se passe coté client.
GRAND MERCI stealth35
pour le temps accordé
:ccool::ccool::ccool: