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 17/01/2011, 15h48   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 1
Points : 1
Par défaut SOAP : Problème sur le header

Bonjour,

Je suis en train de jouer avec les Webservices notamment SOAP, j'arrive bien a faire communiquer mes petits jusqu'au moment ou je veux jouer avec les entêtes.

Lorsque que j'utilie le logiciel Oxygen pour tester mon WSDL, il me propose bien comme entête le code suivant

Code :
1
2
3
4
5
6
7
 
    <SOAP-ENV:Header>
        <_w:Credentials>
            <_w:Login>STRING</_w:Login>
            <_w:Password>STRING</_w:Password>
        </_w:Credentials>
    </SOAP-ENV:Header
Quand je remplis le login et le mot de passe, c'est correctement récupéré coté serveur, et correctement traité.

Mais voila, le problème est du côté client en php, j'ai essayé toutes les variantes que j'ai pus trouver sur le web, et la méthode "Credentials" n'est pas appelée

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
$Login = 'test';
$Password = 'pass';
 
$wsdl = 'test2.wsdl';
$namespace = 'http://localhost/_webservices/';
 
$Credentials = array(
        'Login' =>new SOAPVar($Login, XSD_STRING, null, null, null, $namespace),
        'Password' =>new SOAPVar($Password, XSD_STRING, null, null, null, $namespace),
);
 
$test = new SoapClient(
    $namespace.$wsdl,
    array(
        'trace' => 1,
        'soap_version' => SOAP_1_2,
        'style' => SOAP_RPC,
        'encoding' => SOAP_LITERAL,
        'cache_wsdl' => WSDL_CACHE_NONE
    )
);
 
$headerBody = new SOAPVar($Credentials, SOAP_ENC_ARRAY);
$header = new SOAPHeader($namespace, 'Credentials', $headerBody);
 
$test->__setSOAPHeaders($header);
 
$listeType = $test->GetTypeFichiers();
 
 
 
print('<pre>');var_dump($test);print('</pre>');
voila le retour du var_dump :

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
object(SoapClient)#3 (4) {
  ["trace"]=>
  int(1)
  ["_soap_version"]=>
  int(2)
  ["sdl"]=>
  resource(3) of type (Unknown)
  ["__default_headers"]=>
  array(1) {
    [0]=>
    object(SoapHeader)#5 (4) {
      ["namespace"]=>
      string(43) "http://ogfdev.auxia.lan/david/_webservices/"
      ["name"]=>
      string(11) "Credentials"
      ["data"]=>
      object(SoapVar)#4 (2) {
        ["enc_type"]=>
        int(300)
        ["enc_value"]=>
        array(2) {
          ["Login"]=>
          object(SoapVar)#1 (3) {
            ["enc_type"]=>
            int(101)
            ["enc_value"]=>
            string(3) "ogf"
            ["enc_namens"]=>
            string(43) "http://ogfdev.auxia.lan/david/_webservices/"
          }
          ["Password"]=>
          object(SoapVar)#2 (3) {
            ["enc_type"]=>
            int(101)
            ["enc_value"]=>
            string(4) "Pass"
            ["enc_namens"]=>
            string(43) "http://ogfdev.auxia.lan/david/_webservices/"
          }
        }
      }
      ["mustUnderstand"]=>
      bool(false)
    }
  }
}
Je tourne en rond depuis ce matin à essayer d'envoyer les données au bon endroit, mais la je bloque.

Merci d'avance
Dadouduck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 09h47   #2
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 1
Points : 1
Cherchez plus, dans mon namespace j'avais un / de trop, le bon code client était :

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
$Login = 'test';
$Password = 'pass';
 
$wsdl = 'test2.wsdl';
$namespace = 'http://localhost/_webservices';
 
$Credentials = array(
        'Login' =>new SOAPVar($Login, XSD_STRING, null, null, null, $namespace),
        'Password' =>new SOAPVar($Password, XSD_STRING, null, null, null, $namespace),
);
 
$test = new SoapClient(
    $namespace.'/'.$wsdl,
    array(
        'trace' => 1,
        'soap_version' => SOAP_1_2,
        'style' => SOAP_RPC,
        'encoding' => SOAP_LITERAL,
        'cache_wsdl' => WSDL_CACHE_NONE
    )
);
 
$headerBody = new SOAPVar($Credentials, SOAP_ENC_ARRAY);
$header = new SOAPHeader($namespace, 'Credentials', $headerBody);
 
$test->__setSOAPHeaders($header);
 
$listeType = $test->GetTypeFichiers();
 
 
 
print('<pre>');var_dump($test);print('</pre>');
Dadouduck 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 02h11.


 
 
 
 
Partenaires

Hébergement Web