Bonjour,
Je cherche depuis mon site a appelé un webservice sur une machine distante. Est-ce possible ?
Quelqu'un pourrait-il m'indiquer la marche à suivre svp merci. Je n'ai jamais fait et avoue être un peu perdu...
HPL76
Bonjour,
Je cherche depuis mon site a appelé un webservice sur une machine distante. Est-ce possible ?
Quelqu'un pourrait-il m'indiquer la marche à suivre svp merci. Je n'ai jamais fait et avoue être un peu perdu...
HPL76
oui, il est possible de faire ça. Quel webservice veux tu utiliser?
http://php.net/manual/en/refs.webservice.php
Bonjour gene69 et merci de te soucier d'un problème qui n'est pas le tien !
Je suis vraiment novice en la matière.
Voilà, j'ai 3 fichiers : un index.php, un serveur.php et un client.php.
Mon index se présente de la sorte
A la place des "xxx" j'ai mis l'ip, le nom de la machine distante, le nom du webservice avec pour finir .asmx?wsdl.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php echo '<p>test</p>'; $client = new SoapClient("xxx"); $arFunctions = $client->__getFunctions(); foreach ($arFunctions as $function) { echo $function.'<br/>'." "; } ?>
Voici le fichier client.php
et enfin le serveur.php
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 <?php // Pour supprimer le cache du web-service ini_set('soap.wsdl_cache_enabled', 0); // Nouveau Client SOAP try { // Nouvelle instance de la classe soapClient $client = new SoapClient('http://localhost/MonWebService/monFormat.wsdl', array('trace' => 1)); $parm = date('Y-m-d'); // Appel de la méthode QuelJour du service web try{ $oReturn = $client -> __soapCall('QuelJour', array('string' =>$parm)); } catch (SoapFault $fault) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } // affiche le résultat var_dump($oReturn); } catch (SoapFault $fault) { echo 'erreur : '.$fault; } ?>
Tu me conseilles autre chose ? Que dois-je faire ? Je voudrais simplement dans un premier temps établir une connexion au webservice...
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 <?php // Pour supprimer le cache du web-service ini_set('soap.wsdl_cache_enabled', 0); // Pour définir le temp maximal d'éxecution de notre web-service ini_set('default_socket_timeout', 180); // Nom de notre web-service class Server { // Le service QuelJour que l'on a définit dans notre format wsdl function QuelJour($parm) { return 'Web-Service ok'; } } // On tente d'instancier la classe soapServer // Si cela s'avère impossible, on affiche une erreur try { $server = new SoapServer('monFormat.wsdl', array('trace' => 1,'encoding' => 'ISO-8859-1')); // On définit la classe qui va gérer les requêtes SOAP (pour nous c'est la class Server) $server -> setclass('Server'); $server->setPersistence(SOAP_PERSISTENCE_REQUEST); } catch (Exception $e) { echo 'erreur'.$e; } // Si l'appel provient d'un Web-Service if ($_SERVER['REQUEST_METHOD'] == 'POST') { try { $server -> handle();} catch (Exception $e) { echo 'erreur'.$e; } } // Facultatif seulement pour montrer les fonctions disponibles par le web-service else { echo '<strong>This SOAP server can handle following functions : </strong>'; echo '<ul>'; foreach($server -> getFunctions() as $func) { echo '<li>' , $func , '</li>'; } echo '</ul>'; } ?>
HPL76
Le fichier index.php m'a renvoyé
Ca veut dire qu'il a réussi à se co ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 LoginResponse Login(Login $parameters) AutoLoginResponse AutoLogin(AutoLogin $parameters) LogoutResponse Logout(Logout $parameters) SetSessionValueResponse SetSessionValue(SetSessionValue $parameters) GetSessionValueResponse GetSessionValue(GetSessionValue $parameters) SetBindValueResponse SetBindValue(SetBindValue $parameters) GetBindValueResponse GetBindValue(GetBindValue $parameters) LoginResponse Login(Login $parameters) AutoLoginResponse AutoLogin(AutoLogin $parameters) LogoutResponse Logout(Logout $parameters) SetSessionValueResponse SetSessionValue(SetSessionValue $parameters) GetSessionValueResponse GetSessionValue(GetSessionValue $parameters) SetBindValueResponse SetBindValue(SetBindValue $parameters) GetBindValueResponse GetBindValue(GetBindValue $parameters)
Chacune des lignes affichées correspond aux opérations exposées par le webservice.
Sais-tu laquelle tu veux utiliser ?
Ça veut dire que la connexion est belle et bien faite ?
suffit à lui seul sans aucun autre appel à appeler un webservice ?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part $client = new SoapClient("http://xx.xx.xx.xx/WS/MonService.asmx?wsdl");
Je voudrais être sur de bien comprendre...c'est la dll qui fait ?
A vrai dire, je ne sais pas quelle opération je dois utiliser mais admettons que ce soit la première LoginResponse Login(Login $parameters) ?
En tout cas merci vivement pour votre esprit communautaire !!!
HPL76.
Partager