[SOAP] client PHP- Serveur Perl
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
Code:
1 2 3 4 5 6 7
| #- Hello.pm
package Hello;
sub sayHello{
shift;
return "Hello ".shift;
}
1; |
Repartiteur de requête
Code:
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; |
2.Coté client
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
| <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.