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 26/11/2010, 15h33   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 44
Points : 14
Points : 14
Par défaut WSDL soapHeader PHP authentification

Bonjour
je souhaite développer un web service en SOAP.
Je dois passer des paramètres de login et de mdp dans le header, ce que je fais, mais le pb est que je n'arrive pas à les récuperer du cote serveur (de fais ma WS me renvoie toujours false quelque soit la valeur passé).
Alors le pb pourrais se trouver du cote du fichier WSDL.
Ce que je souhaitais savoir, c'est si la méthode qui permet l'authentification cote serveur dois se trouver dans le fichier WSDL, et dans ce cas, si celle méthode dois avoir un "code spéciale " dans le wsdl.

Voici mon code qui toutefois reste dans ce qu'on trouve sur le web.

Cote 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
 
class UserPasswordPair
{
    public $Username;
    public $Password;
 
    function __construct($Username, $Password)
    {
        $this->Username = $Username;
        $this->Password = $Password;
    }
}
$credentials = new UserPasswordPair("test", "test");
 
$soapAuthenticator = new SoapVar(
$credentials,
SOAP_ENC_OBJECT,
"headerAuthentify");
 
$authHeader = new SoapHeader("http://127.0.0.1/clientTest/","headerAuthentify",$soapAuthenticator,false);
 
try 
{	
	$client = new SoapClient( 'http://127.0.0.1/clientTest/fiche.wsdl', array ('trace'=>true));
	$InfoResponse = $client->__soapCall("getServerInfo",array(),NULL,$authHeader);

Cote Serveur :
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
 
 
class mySoapClass {
 
    public $passed;
	public $use;
	public $pass;
 
    public function headerAuthentify( $parameters){
 
    	$this->use = $parameters;
    	$this->pass = $NewPart;
 
        if($parameters =="test"){
            $this->passed = true;
        } else {
            $this->mySoapErr( );
        }
    }
 
	public function mySoapErr(){
      print "Erreur";
    }
 
    public function getServerInfo(){
		$this->headerAuthentify( $username, $password );
        if(!$this->passed){
             return array('info' => 'Inconnu : '.$this->use);
        }
		 return array('info' => 'ok');
    }
 
}
 
$server = new SoapServer('http://127.0.0.1/clientTest/fiche.wsdl',  array('trace' => 1, 'soap_version' => SOAP_1_2));
$server -> setclass('mySoapClass');
 
	$server->handle();
Cote wsdl :

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
 
 
<?xml version="1.0"?>
 
<definitions name="CSP"
    targetNamespace="urn:CSP"
    xmlns:tns="urn:CSP"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:typens="urn:CSP"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns="http://schemas.xmlsoap.org/wsdl/">
 
<types>
    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:CSP"> 
        <xsd:complexType name="MyInfo">
            <xsd:all>
                <xsd:element name="info" type="xsd:string"/>
            </xsd:all>
        </xsd:complexType>
    </xsd:schema>
</types>
 
<message name="getServerInfo">
    <part name="none" type="xsd:int"/>
</message>
<message name="getServerInfoResponse">
    <part name="value" type="typens:MyInfo"/>
</message>
 
<portType name="CspPorts">
    <operation name="getServerInfo">
        <input  message="getServerInfo"/>
        <output message="getServerInfoResponse"/>
    </operation>
</portType>
 
<binding name="MyBinding"  type="typens:CspPorts">
    <soap:binding style="rpc" 
        transport="http://schemas.xmlsoap.org/soap/http" />
      <operation name="getServerInfo">
          <soap:operation
             soapAction="http://127.0.0.1/clientTest/fiche.wsdl"/>
        <input>
            <soap:body use="literal"/>
        </input>
        <output>
            <soap:body use="literal"/>
        </output>
    </operation>
</binding>
<service name="MyWebService">
    <documentation>Mon Service web</documentation>
        <port name="CspPorts" binding="typens:MyBinding">
      <soap:address location="http://127.0.0.1/clientTest/test.php"/>
    </port>
  </service>
 
</definitions>
Merci
sebxid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 18h06   #2
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 44
Points : 14
Points : 14
Voila la reponse
elle se trouve dans la discussion
http://php.net/manual/en/soapheader.soapheader.php
sebxid est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h02.


 
 
 
 
Partenaires

Hébergement Web