Bonjour,
Je tente de profiter de l'approche SOA pour un stage en entreprise.
Pour cela, je suis donc partie d'une implémentation simpliste du style Hello World!
La particularité est que je souhaite que mon service web soit écrit en perl et mon client en php.
Voici les caracteristiques de mes postes :
Serveur Web service
OS: Aix
apache : 1.3.31
perl:v5.8.2
SOAP : SOAP::Lite
Client
OS : Windows XP
EasyPhp : 2.0.0
SOAP : nusoap
1. Coté serveur en perl
Gestionnaire de requêtes
Repartiteur de requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #- Hello.pm package Hello; sub sayHello{ shift; return "Hello ".shift; } 1;
2.Coté client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #!/usr/bin/perl -w # hello.cgi - Hello SOAP handler use SOAP::Transport::HTTP; use Hello; use SOAP::Transport::HTTP; SOAP::Transport::HTTP:CGI ->dispatch_to('Hello') ->handle;
Code php : 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 <HTML> <BODY> <?php include('nusoap.php'); //$client = new soapclient('http://lpcappldev1/services/nusoap/lib/index.php'); //$wsdl= "http://lpcappldev1/services/nusoap/lib/service.wsdl"; //$client = new soapclient($wsdl,'wsdl'); $client = new soapclient('http://apctest/cgi-bin/services/hello.cgi'); $parametres = array('name'=>'Sebastien cabarrus'); ?> <?php $result=$client->call('sayHello', $parametres); if ($client->fault) { echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>'; } else { $err = $client->getError(); if ($err) { echo '<h2>Error</h2><pre>' . $err . '</pre>'; } else { echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>'; } } echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>'; echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>'; echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>'; ?> </BODY> </HTML>
Je récupere le message suivant :
soapclient : error: Response not of type text/xml : text/html; charset=iso-8859-1
Je suppose que cela veut dire que mon client attend de l'xml (wsdl) et qu'au final je lui envoie du text.
Le PHP est un langage que je maitrise plus que le Perl.
Merci d'avance.
Cordialement.
Partager