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

Bibliothèques et frameworks PHP Discussion :

[Web Service][SOAP] Client PHP5 et tns:ArrayOfString


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut [Web Service][SOAP] Client PHP5 et tns:ArrayOfString
    Bonjour,
    Je dois réaliser un client de webservice en PHP5 (le webservice est en Java), j'ai réussi à appeler des fonctions simples, par contre j'ai un soucis avec une fonction qui prend en argument un tableau de string (tns:ArrayOfString dans le WSDL).
    J'ai essayé en envoyant directement un array contenant les strings ce qui me donnait une erreur de paramètres. J'ai ensuite essayé avec un array associatif où chaque string était associée à true, et là j'obtiens une erreur très étrange de SQL. C'est peut être le webservice qui a un soucis mais il a normalement été testé par des clients java avec succès. Donc si quelqu'un pouvait me dire quelle syntaxe utiliser pour envoyer un tableau de string pour être sûr que ça ne vienne pas de mon client (ce qui est très certainement le cas).

    J'ai pas mal cherché sur internet, mais je n'ai jamais trouvé de réponse claire sur le sujet : comment envoyer un tableau de string.

    ---------------------------------
    Edit je viens de réaliser que le type était en fait déclaré par le WSDL, je pensais que c'était un type de base...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsd:complexType name="ArrayOfString">
    	<xsd:sequence>
    		<xsd:element maxOccurs="unbounded" minOccurs="0" name="string" nillable="true" type="xsd:string"/>
    	</xsd:sequence>
    </xsd:complexType>
    Je reformule donc ma question, comment savoir sous quelle forme PHP je dois envoyer mes valeurs pour coller à ce type "ArrayOfString" ?
    ---------------------------------

    Des extraits du 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
    <xsd:element name="getData">
    	<xsd:complexType>
    		<xsd:sequence>
    			<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string"/>
    			<xsd:element maxOccurs="1" minOccurs="1" name="in1" nillable="true" type="xsd:string"/>
    			<xsd:element maxOccurs="1" minOccurs="1" name="in2" nillable="true" type="tns:ArrayOfString"/>
    		</xsd:sequence>
    	</xsd:complexType>
    </xsd:element>
     
    <wsdl:message name="getDataRequest">
    	<wsdl:part name="parameters" element="tns:getData"/>
    </wsdl:message>
     
    .. portType ..
    	<wsdl:operation name="getData">
    		<wsdl:input name="getDataRequest" message="tns:getDataRequest"/>
    		<wsdl:output name="getDataResponse" message="tns:getDataResponse"/>
    		<wsdl:fault name="Exception" message="tns:Exception"/>
    	</wsdl:operation>
    ...
    Et mon client PHP5 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $client = new SoapClient("https:....wsdl",
    	array(
    	'trace' => 1,
    	'soap_version' => SOAP_1_1,
    	'style' => SOAP_DOCUMENT,
    	'encoding' => SOAP_LITERAL
    	));
     
    $data = $client->getData(array(
    	'in0' => "$arg1",
    	'in1' => "$arg2",
    	'in2' => array("val1" => true, "val2" => true)
    	));
    Merci d'avance !

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    En fait il faut seulement envoyer un array de chaines, avec le tableau associatif rien n'était envoyé dans la requête SOAP ce qui ne provoquait plus d'erreur au niveau d'appel de la fonction. L'erreur SQL n'avait rien à voir avec le problème.

    Le code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $data = $client->getData(array(
    	'in0' => "$arg1",
    	'in1' => "$arg2",
    	'in2' => array("val1", "val2")
    	));

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

Discussions similaires

  1. Utiliser un objet dans un Web Service Soap Client
    Par benny-blanco dans le forum Services Web
    Réponses: 1
    Dernier message: 19/04/2012, 09h23
  2. Web Service Soap Client
    Par benny-blanco dans le forum Windows Phone
    Réponses: 1
    Dernier message: 08/04/2012, 00h25
  3. [Web Service][SOAP] Client Web Service en PHP5
    Par bm_belgacem dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 07/05/2008, 18h03
  4. [Web Service][SOAP] Client soap PHP et C#
    Par zulot dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/04/2007, 10h53
  5. [Web Service][SOAP] WSDL/PHP5/SOAP: Renvoyer un tableau
    Par Netman dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/05/2006, 19h08

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