IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Webservice SOAP Paramètres


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut Webservice SOAP Paramètres
    Bonjour,
    Il s'agit de mon premier post vu que le plus souvent je trouve la réponse par moi même, mais là....

    J'ai actuelement un problème pour la construction du BODY d'un webservice SOAP en PHP.
    En gros je n'arrive pas à construire correctement les paramètres à fournir au WS.

    Voici le type de requete SOAP que je dois envoyer :

    CODE 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Header>
        <AuthHeader xmlns="http://service.smartadserver.com/">
          <UserName>string</UserName>
          <Password>string</Password>
        </AuthHeader>
      </soap:Header>
      <soap:Body>
        <GetCampaigns xmlns="http://service.smartadserver.com/">
          <AdvertiserID>int</AdvertiserID>
        </GetCampaigns>
      </soap:Body>
    </soap:Envelope>
    Au niveau du Header et des paramètres d'authentification, aucun problème, ca passe nikel, vu que lorsque la fonction appelée n'a pas besoin de paramètres, j'ai des résultats.

    C'est seulement lorsque je dois fournir des paramètres que je bloque.

    J'ai essayé de passer un tableau de paramètres (indexé, associatif...) lors de l'appel à la fonction et ça ne marchait pas.
    J'en suis arrivé à essayer avec l'objet SoapParam puisque j'ai constaté en debug qu'il me manquait un noeud xml.
    cette dernière tentative donne çeci :

    CODE 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?> 
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://service.smartadserver.com/">
    	<SOAP-ENV:Header>
    		<ns1:AuthHeader>
    			<ns1:UserName>***</ns1:UserName>
    			<ns1:Password>***</ns1:Password>
    		</ns1:AuthHeader>
    	</SOAP-ENV:Header>
    	<SOAP-ENV:Body>
    		<ns1:GetCampaigns/>
    		<AdvertiserId>2805</AdvertiserId>
    	</SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Le code qui génère tout cette requete SOAP :
    CODE 3 :
    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
     
    $wsdl = 'http://service.smartadserver.com/v25/service.asmx?WSDL';
     
    //appel du wsdl
    $client = new SoapClient($wsdl, array('trace'=> 1));
     
    //construction du Header
    $paramHeader = array('UserName' =>'***', 'Password' =>'***' );
    $nsHeader = "http://service.smartadserver.com/";
    $header = new SoapHeader($nsHeader,'AuthHeader',$paramHeader );
     
    //parametres
    $paramB = new SoapParam("2805","AdvertiserId");
     
     
    //envoi de la requete SOAP
     
    try {
    	$res = $client->__soapCall('GetCampaigns',array( '',$paramB), NULL, $header);
    } catch (Exception $e) {
    	echo $e;
     
    	$res = $client->__getLastResponse();
    	$requestH = $client->__getLastRequestHeaders();
    	$request = $client->__getLastRequest();
     
    	echo "<p>" . htmlentities($requestH) . "</p>";
    	echo "<p>" . htmlentities($request) . "</p>";
    }
    Donc certaines choses que je trouve étranges déjà :
    - dans l'appel à la méthode __soapCall (cf CODE 3), si je ne fourni pas un array avec comme premiere valeur ' ', $paramB n'est pas pris en compte. Peut importe le nombre de paramètres, il ignorera toujours la valeur en position 0. Je ne comprends pas pourquoi.

    - le premier point n'étant pas vraiment génant, je me penche plutot sur ce qui me pose vraiment problème :
    dans la requete que j'envoie (Cf CODE 2), j'ai ce noeud qui vient se coller <ns1:GetCampaigns/>. Je sais pas ce qu'il vient faire la, et il m'empeche de construire correctement ma requête... D'après le schéma de requete que je dois envoyer (cf CODE 1), il lui faut un noeud + valeur. Quand je vois ça "<ns1:GetCampaigns/>" (cf CODE 2), il semble attendre des attributs...

    Je vous remercie d'avances pour vos réponses/aides/pistes/suggestions

    Bien cordialement,
    Guillaume

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pas la peine d'utilise __soapCall le SOAP c'est fait pour ne pas ce soucier du langage donc fait direct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $client->GetCampaigns(...)

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Bon, j'étais justement entrain de faire les modifs pour utiliser directement la méthode .

    Essai concluant puisque j'obtiens mes résultats.

    L'apparition du noeud intru "<ns1:GetCampaigns/>" est bien lié à l'appel de la fonction.

    Seulement la raison pour laquelle j'ai préféré utiliser __soapCall, c'est que je manipule environ une vingtaine de webservices. J'ai donc fait une méthode générique de récupération de la méthode a appeler puis de mise en forme de la réponse. __soapCall me permettait justement de stocker la méthode à appeler dans une variable. Et je ne vois pas comment faire ca avec l'autre méthode.

    Bien cordialement,
    Guillaume

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pareil

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Merci

    J'avançai avec des oeillères tellement énormes que j'avai zapé ça ><

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Web Service] Appel Webservice SOAP
    Par HaTnuX dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/08/2008, 22h33
  2. webservices soap et php
    Par manuscle dans le forum WinDev
    Réponses: 0
    Dernier message: 16/04/2008, 16h35
  3. Réponses: 1
    Dernier message: 13/02/2007, 17h43
  4. invoquer directement un webService avec paramètre via url
    Par Nycos62 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 21/12/2006, 12h20
  5. Webservice SOAP et fichier attaché ?
    Par Bruno13 dans le forum Services Web
    Réponses: 13
    Dernier message: 03/04/2006, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo