Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2012, 14h57   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Par défaut connexion a soap en php5

Bonjour à tous,

J'ai un travail a réaliser pour un client, je dois dans un premier temps tester l'enviroinment soap pour voir sir je recupere bien tous ce que j'ai besoin.

Le soucis c'est que je n'arrive pas à me connecter au web service voici le detail de la page php :

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
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/** DEBUT DE LA CONNEXION WEBSERVICE **/
 
 
// 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);
 
// Mon login et mon password
define('MON_LOGIN', 'test');
define('MON_PASSW', 'test1');
define('MA_BASE', '1');
define('MA_LANGUE', '1');
 
// liste soptions lors de la connexion
$options = array(
	'exceptions' => true,
	'trace' => 1,
	'cache_wsdl' => WSDL_CACHE_NONE,
	);
 
 
// Nouveau Client SOAP
try
{
	// Nouvelle instance de la classe soapClient
	$soap = new SoapClient('http://www?exemple.fr/FrontSoapPort?wsdl', $options);
 
	// Si c'est ok ?
	echo 'Le web service est en route :';
 
	// Les tests du web service
	//var_dump($soap->ParameterList()); //Affiche les parametres disponibles
	//var_dump($soap->__getFunctions()); //Affiche les fonctions disponibles
	//var_dump($client->__getTypes());   //Affiche tous les types du wsdl
 
 
	// Appel de la méthode LoginExecute du service web pour se connecter au web service
	try
	{
		$parameters = array(
			'inUserName' => MON_LOGIN,
			'inPassword' => MON_PASSW,
			'inBaseId'	 => MA_BASE
			);
 
 
 
		//Action :: On initialise la connexion au web service
		$connexion = $soap->__soapCall('LoginExecute', array($xml_string, $parameters));
		//$login = $soap->LoginExecute('loginUtilType', $parameters);
		/*var_dump($login);
		exit;*/
 
		//Action :: Je liste les codes civilité
		$code = $soap->CodeCivilityList('CodeCivilityListType', '1');
 
 
		// Debug :: requete qui revient et requete qui repart
 
		//[Debug]
		echo "<pre>";
		print "Request: \n" . htmlspecialchars($soap->__getLastRequestHeaders()) . "\n\r";
		print "Request: \n" . htmlspecialchars($soap->__getLastRequest()) . "\n\r";
		echo "--------------------------------------------------\n\r";
		print "Response: \n" . htmlspecialchars($soap->__getLastResponseHeaders()) . "\n\r";
		print "Response: \n" . htmlspecialchars($soap->__getLastResponse()) . "\n\r";
		echo "</pre>";
		//[/Debug]
 
 
 
		if ($code->error)
		{
			//var_dump($code);
		}
 
 
		if ($login->outUser == true)
		{
			echo "Ma connection est bonne ?";
		}
		else
		{
			echo "pas connecté";
 
		}
		//print_r($login);
	}
	catch (SoapFault $fault)
	{
		trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
	}
 
 
}
catch (SoapFault $fault)
{
	echo 'erreur : ' . $fault;
}
 
/** FIN DE LA CONNEXION WEBSERVICE **/

et voici le retour :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Request: 
POST /exemple_front_ws/FrontSoapPort HTTP/1.1
Host: www.exemple.fr
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.3.2-1ubuntu4.11
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://types.exemple.net/CodeCivilityList"
Content-Length: 254
 
 
 
Request: 
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://types.exemple.net"><SOAP-ENV:Body><ns1:CodeCivilityList/><param1>1</param1></SOAP-ENV:Body></SOAP-ENV:Envelope>
 
 
Response: 
<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:CodeCivilityListResponse xmlns:ns2="http://types.exemple.net"><header/><error><errorNumber>-2</errorNumber><errorDescription>Login fault</errorDescription><errorObjectId>0</errorObjectId><exceptionType>com.exemple.webapp.exception.BusinessFaultException</exceptionType><exceptionMessage></exceptionMessage><exceptionDetails>nullnet.exemple.impl.CodeSoapImpl.codeCivilityList(CodeSoapImpl.java:42)
Voilà le soucis j'ai essayé de me connecter par tous les moyens mais ??? est ce que vous auriez une idée ? merci
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h25   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 002
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 002
Points : 5 055
Points : 5 055
C'est bien de convertir les SOAP Fault en erreur PHP (quoique...) mais il faudrait pas oublier d'afficher les erreurs pour débugger...

Code :
1
2
3
<?php
ini_set('display_error', 1);
error_reprting(-1);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 07h22   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Merci,

En fait que j'essaie de me connecter sur l'env soap de manière traditionnelle ou en nusoap impossible de recuperer un réponse cohérente pour me connecter :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try
{
	// connexion a la librairie de nusoap
require_once($_SERVER['DOCUMENT_ROOT'].'/nusoap/lib/nusoap.php');
 
// connexion au service wsdl
$serverpath ='http://www.exemple/WebAppFrontSoapPort?wsdl';
 
// Action :: parametre de connexion
$param = array('InUserName' => 'test',
			   'InPassword' => 'test',
			   'InbaseId' => '1');
 
 
// Connexion au soap
$soap = new soapclient($serverpath, $options);
 
// Appel de la methode "loginExecute"
$result = $soap->__Call('LoginExecute', array($param));
et ma requete me montre que deja la balise LoginExecute est fermée et en reponse je ne recois aucune erreur et pas de contenu ??

est ce que le dev de l’environnement soap lorsqu'il a fait son wsdl ne se serait pas trompé

Est qu'il faudrait que j'envoie les données en xml pour quelles soient prises en compte ??
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 10h48   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 228
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 228
Points : 8 611
Points : 8 611
faut pas utiliser __call pour SOAP

c'est direct

Code :
$result = $soap->LoginExecute($param);
c'est fait exprès pour ça le SOAP
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h28.


 
 
 
 
Partenaires

Hébergement Web