NuSoap call error

Petit nouveau ! | 8 Messages

21 août 2009, 14:13

Bonjour

Avec le script ci-dessous (fonctionnant avec NuSoap) j'arrive bien à me connecter au webservice mais par contre lorsque je fais le 'call' cela me retour l'erreur suivante. Savez vous ce que cela peut vouloir dire ?
Merci de votre aide...

Code : Tout sélectionner

Fault Array ( [faultcode] => soap:Server [faultstring] => Le serveur n'a pas pu traiter la demande. --> La référence d'objet n'est pas définie à une instance d'un objet. [detail] => )
require_once('include/lib/nusoap.php');
$options        = array(
'compression'=>true,
'exceptions'=>false,
'trace'=>true
);
$client = new soapclient("http://www.exemple.com/test.asmx?WSDL", $options);
$err = $client->getError();
if ($err) {
	echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
	echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
	exit();
} else {
	$result = $client->call(Sujet, "test");
	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>';
		}
	}
}

Mammouth du PHP | 568 Messages

21 août 2009, 16:26

Il te faut mettre des ' dans l'appel de la méthode du Web Service:
$client->call('Sujet', 'test');
A titre d'exemple, l'appel d'un de mes web service se fait comme ci-dessous:
$client = new SoapClient(SERVER_URL . "wsdl/IntegrationData.wsdl.php", array('trace' => 1, 'soap_version' => SOAP_1_1));
		//Appel de la methode wsResultIntegrationData du service web
		$result = $client->__soapCall('wsResultIntegrationData', $parametres);

Petit nouveau ! | 8 Messages

21 août 2009, 16:36

J'ai essayé avec
$result = $client->call('Sujet', 'test');
et tjrs la même erreur !

en utilisant une autre fonction qui ne prend pas de parametre ça fonctionne bien
	$result = $client->call(Liste);
	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>';
		}
	}

Mammouth du PHP | 568 Messages

21 août 2009, 16:43

Effectivement, d'ailleurs l'erreur renvoyé par Soap informe que c'est le serveur qui génère une erreur et pas le client.

Il faut que tu vérifie le code du serveur ainsi que le WSDL, pour voir si la méthode est correctement référencé.

Petit nouveau ! | 8 Messages

21 août 2009, 16:51

OK merci
Mais je n'ai pas accès aux codes coté serveur. Y at'il un fonction soap qui me permet de lister ttes les fonctions du webservice ?

Mammouth du PHP | 568 Messages

21 août 2009, 17:31


Petit nouveau ! | 8 Messages

21 août 2009, 17:37

Merci sauf que cette fonction ne fonctionne pas avec la lib NuSoap. Je suis encore avec php4 :roll: