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 : 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;
Repartiteur de requête

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;
2.Coté client

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.