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
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.
« Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
« Le watchdog aboie, les tests passent »
transgohan,
si je comprends bien je fais un
??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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à...
Te manques l'entête du fichier, ainsi que le premier parent.
« Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
« Le watchdog aboie, les tests passent »
en effet ... donc cela devrait fonctionner
Merci pour ton aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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 bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 retourner
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 client
Code : Sélectionner tout - Visualiser dans une fenêtre à part $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 : Sélectionner tout - Visualiser dans une fenêtre à part
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é serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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_server
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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é
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager