Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-06-2009 16:23:46

efusien
Nouveau membre
Date d'inscription: 15-06-2009
Messages: 5

[Résolu][Zend_Soap_Client][1.8.3] Requête SOAP

Bonjour,

J'ai un appel soap ici :

Code:

try {
    $client = new Zend_Soap_Client('http://www.monSite.com/syndication.asmx?WSDL');
    pr($client->getFunctions());
} catch(Zend_Exception $e){
    pr($e->getMessage());
}

Le pr() me renvoi un tableau de fonctions :

Code:

Array
(
    [0] => getFieldsSearchResponse getFieldsSearch(getFieldsSearch $parameters)
    [1] => DataSet getFieldsSearch(string $idModule)
)

Je souhaiterais utiliser la fonction "getFieldsSearch", mais je ne sais pas comment m'y prendre. J'ai bien un id de module $idModule, mais je ne sais pas comment l'utiliser.
Voici mon test :

Code:

try {
    $client = new Zend_Soap_Client('http://www.monSite.com/syndication.asmx?WSDL');
    pr($client->getFieldsSearch());
} catch(Zend_Exception $e){
    pr($e->getMessage());
}

Mais cela me renvoie cette erreur :
Fatal error: Uncaught SoapFault exception: [soap:Client] Unable to handle request without a valid action parameter. Please supply a valid soap action. in /Zend/Soap/Client.php:1062 SoapClient->__soapCall('getFieldsSearch', Array, NULL, NULL, Array) #1 [internal function]: Zend_Soap_Client->__call('getFieldsSearch', Array) #2 Zend_Soap_Client->getFieldsSearch()
(...)

Que veut dire "Unable to handle request without a valid action parameter. Please supply a valid soap action." ???

Dernière modification par efusien (16-06-2009 18:48:53)

Hors ligne

 

#2 15-06-2009 23:56:21

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Soap_Client][1.8.3] Requête SOAP

Bonsoir,

La fonction que tu appelles attend un paramètre on dirait:

Code:

getFieldsSearch(getFieldsSearch $parameters)

L'erreur vient sans doute de là smile


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#3 16-06-2009 08:42:17

efusien
Nouveau membre
Date d'inscription: 15-06-2009
Messages: 5

Re: [Résolu][Zend_Soap_Client][1.8.3] Requête SOAP

Effectivement,

Si je fais un $client->getTypes() je trouve le tableau suivant :

Code:

Array
(
    [0] => struct getFieldsSearch {
    string idModule;
}

Seulement voilà, même en passant en paramètre l'ID de mon module, cela retourne la même erreur :
"Unable to handle request without a valid action parameter. Please supply a valid soap action."
Mon code :

Code:

try {
    $client = new Zend_Soap_Client('http://www.monSite.com/syndication.asmx?WSDL');
    pr($client->getFieldsSearch('IDdeMonModule'));
} catch(Zend_Exception $e){
    pr($e->getMessage());
}

Pour info, voici la requête que je suis censé envoyé au serveur soap :

Code:

POST /syndication.asmx HTTP/1.1
Host: http://www.monSite.com
Content-Type: text/xml; charset=utf-8
Content-Length: (...)
SOAPAction: "http://www.monSite.com/webservices/getFieldsSearch"

<?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:Body>
    <getFieldsSearch xmlns="http://www.monSite.com/webservices/">
      <idModule>string</idModule>
    </getFieldsSearch>
  </soap:Body>
</soap:Envelope>

Avec Zend_soap_client, est t-il possible d'afficher la requête que l'on envoie au serveur ? Il y a bien __getLastRequest(), mais vu que mon appel renvoie un fatal error rien n'est affiché...
Quel est le moyen pour passer le "SOAPAction", dont la valeur serait ici "http://www.monSite.com/webservices/getFieldsSearch" ? C'est peut-être là le soucis ?

Je ne trouve pas de doc vraiment précise sur le zend_soap_client sur le web, seulement des exemples très simples, avec lesquels il est difficile de s'appuyer...

Hors ligne

 

#4 16-06-2009 09:54:08

efusien
Nouveau membre
Date d'inscription: 15-06-2009
Messages: 5

Re: [Résolu][Zend_Soap_Client][1.8.3] Requête SOAP

En utilisant la classe SoapCLient j'ai un résultat en retour :

Code:

try {
    $client = new SoapClient('http://www.monSite.com/syndication.asmx?WSDL');
    $response = $client->getFieldsSearch(array('idModule' => 'myIDModuleString'));
    pr($response);
} catch(Zend_Exception $e){
    pr($e);
}

Le retour :

Code:

stdClass Object
(
    [getFieldsSearchResult] => stdClass Object
        (
            [schema] => 
            [any] => mesResultatsIci..........
        )
)

Ici j'ai donc bien ma fonction getFieldsSearch qui marche, avec en paramètre idModule (string). Pourquoi avec le Zend_soap_client cela ne fonctionne pas ??? :-/

Hors ligne

 

#5 16-06-2009 18:47:10

efusien
Nouveau membre
Date d'inscription: 15-06-2009
Messages: 5

Re: [Résolu][Zend_Soap_Client][1.8.3] Requête SOAP

Le problème est résolu : cette erreur provient du fait que je n'ai pas indiqué la version de SOAP.
Il suffit donc d'indiquer la version de SOAP dans les options :

Code:

$wsdl = 'http://www.monSite.com/syndication.asmx?WSDL';
$options = array('soap_version' => SOAP_1_1);
$client = new Zend_Soap_Client($wsdl, $options);

Ici j'utilise par exemple la constante SOAP_1_1.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages