Bonjour,

je travaille actuellement sur un webservice, et jusque la tout fonctionne, enfin presque.

J'arrive à envoyer un xml de requete et de récupérer sa réponse via le soap, mais, arrive un soucis : j'ai besoin d'intégrer des parametres de connection utilisateur dans l'entête. je génère donc le header du soap, mais du coté serveur comment récupérer ces infos?

Sachant que je n'utilise pas nusoap mais l'extention de php 5


Alors voila comment je créé mon client :

Code : 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
31
32
33
34
35
36
37
 
<?php
header("Content-Type: text/xml; charset=UTF-8");
 
// Désactivation du cache WSD Pour la période de Dev
ini_set("soap.wsdl_cache_enabled", false);
 
// lier le client au fichier WSDL
$clientSOAP = new SoapClient("http://wota.###/wsdl/Test.wsdl");
 
$namespace			=	"http://wota.###.com/wsdl/";
 
// Définir les informations utilisateur dans le header
$infos_user			=	array(
							"User_Log"			=>	"David",
							"User_Password"		=>	"pass",
							"Language"			=>	"EN");
 
 
$CredentialHeader	=	new SoapHeader("http://wota.###.com/wsdl/",	$CredentialHeader, $infos_user);
 
// Génération du header
$headerSOAP			=	array($User_Log, $User_Password, $Language);
$clientSOAP->__setSoapHeaders($headerSOAP);
 
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<EHAreaCityRQ xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://wota.###.com/xsd\" xsi:schemaLocation=\"http://wota.###.com/xsd http://wota.exclusive-hotels.com/xsd/EHCityRQ.xsd\">
	<AreaCity>
		<CityCode>PAR</CityCode>
		<Language>EN</Language>	  
	</AreaCity>
</EHAreaCityRQ>";
 
 
// executer la methode EHAreaCityRQ
echo $clientSOAP->EHAreaCityRQ($xml);
?>

et ma partie serveur
Code : 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
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
<?php
// Désactivation du cache WSDL Pour la période de Dev
ini_set("soap.wsdl_cache_enabled", false);
 
// Inclusion de configuration
require_once("../library/conf.php");
 
// On tente d'instancier la classe soapServer
// Si cela s'avère impossible, on lève une exception
try
{
class AreaCity
{
	function EHAreaCityRQ($xml) 
	{
		// #####################################################################
		// Traitement du xml d'entrée
		// #####################################################################
 
		// Récupération du flux XML
		$xml_input = new SimpleXMLElement($xml);
 
		// Récupération du code de langue
		$Language			=	$xml_input->AreaCity->Language;
 
		// Récupération du CountryCode
		$CityCode			=	prep_var($xml_input->AreaCity->CityCode);	
 
		// #####################################################################
		// Traitement du xml de réponse
		// #####################################################################
 
		// Génération du Fichier XML
		$xml_output = new templates("../xml_templates/EHAreaCityRS.xml");
 
		$i = 0;
		$listequartiers = array();
 
		// Requette pour lister les quartiers
		$query_quartiers = mssql_query("ps_OTA_List_AreaCity $CityCode,  '$Language'");
 
		// Récupération des erreurs de la requete
		$error = mssql_get_last_message();
 
		// Effectuer la boucle si pas d'erreur
		if (!valide_error($error))
		{
			while ($datas = mssql_fetch_array($query_quartiers))
			{
				$listequartiers[$i] = array(
					"AreaCityCode"	=>	$datas["AreaCityCode"],
					"CityCode"		=>	$datas["CityCode"],
					"AreaCityName"	=>	$infos_user//convert_text($datas["AreaCityName"])
				);
				$i++;
			}
 
			// Affiche le résultat si pas d'erreur
			if ($xml_output->bloc_exist("AreaCity")) $xml_output->parse_bloc("AreaCity", $listequartiers);
 
			// Retourne le code XML
			return $xml_output->exporte_xml();		
		}
		// Sinon affiche message d'erreur
		else return error("EHAreaCityRS", "EHAreaCityRS", $error);
	}
}	
	// #########################################################################
 
	// Selection du Service
	$ServerEHAreaCityListServiceSOAP = new SoapServer("Test.wsdl");
 
	// Ajout de la fonction de traitement du service SOAP
	$ServerEHAreaCityListServiceSOAP->setClass("AreaCity");
 
	// Retourne le fichier XML
	$ServerEHAreaCityListServiceSOAP->handle();
}
 
// Récupération des exceptions
catch (Exception $e)
{
	echo $e;
}
 
// Fermeture de la connection à la Base de Données
mssql_close($data_base);
?>
et le wsdl
Code : 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:eh="http://wota.###.com/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" name="EHAreaCityListService" targetNamespace="http://wota.###.com/xsd">
	<wsdl:types>
		<xs:schema>
			<!-- Define data types -->
			<xs:element name="EHAreaCityRQ"/>
			<xs:element name="EHAreaCityRS"/>
		</xs:schema>
	</wsdl:types>
	<wsdl:message name="AreaCityListRequest">
		<!-- Define operation and messages references -->
		<wsdl:part name="EHAreaCityRQ" element="EHAreaCityRQ"/>
	</wsdl:message>
	<wsdl:message name="AreaCityListResponse">
		<!-- Define operation and messages references -->
		<wsdl:part name="EHAreaCityRS" element="EHAreaCityRS"/>
	</wsdl:message>
	<wsdl:portType name="AreaCityListPortType">
		<wsdl:operation name="EHAreaCityRQ">
			<!-- Define the request -->
			<wsdl:input message="eh:AreaCityListRequest"/>
			<wsdl:output message="eh:AreaCityListResponse"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="AreaCityListBinding" type="eh:AreaCityListPortType">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="EHAreaCityRQ">
			<soap:operation soapAction="AreaCityList" style="document"/>
			<!-- Define SOAP binding -->
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="EHAreaCityListService">
		<wsdl:port name="AreaCityListPort" binding="eh:AreaCityListBinding">
			<soap:address location="http://wota.###.com/wsdl/Test.php"/>
			<!-- Define SOAP interface width declarations binding -->
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>

Un grand merci par avance à ceux qui me mettrons sur la piste