Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour a tous. Je suis débutant en WS et PHP et dans le cadre d'un stage en entreprise je dois réaliser un web service entre un serveur web linux et un as400. L'AS400 héberge les informations clients dans sa base de données et le serveur linux est le serveur hébergeant le site web de l'entreprise. C'est sur ce serveur que les clients de la boite se connecteront afin de modifier les informations les concernant dans la base de données de l'AS400.
Alors vu que je ne suis que stagiaire je ne dois réaliser que le code client du WS. La partie serveur est réalisée par un autre membre de l'entreprise.
Concernant le serveur :
La classe nécessaire à été codée et la génération du wsdl correspondant se fait (bien qu'il semblerait qu'il y ait quelques petits problemes...)
Voici le WSDL généré :
<definitions name="db2services" targetNamespace="http://@IP_AS400:8000/chemin/de/mon/fichier.php"> − <portType name="db2servicesPort"> − <operation name="db2services"> <input message="tns:db2servicesRequest"/> <output message="tns:db2servicesResponse"/> </operation> − <operation name="sayHello"> // ma fonction test <input message="tns:sayHelloRequest"/> <output message="tns:sayHelloResponse"/> </operation> − <operation name="isConnect"> <input message="tns:isConnectRequest"/> <output message="tns:isConnectResponse"/> </operation> − <operation name="query_multi03"> <input message="tns:query_multi03Request"/> <output message="tns:query_multi03Response"/> </operation> − <operation name="iconnect"> <input message="tns:iconnectRequest"/> <output message="tns:iconnectResponse"/> </operation> − <operation name="iwrkactjob"> <input message="tns:iwrkactjobRequest"/> <output message="tns:iwrkactjobResponse"/> </operation> − <operation name="isystem"> <input message="tns:isystemRequest"/> <output message="tns:isystemResponse"/> </operation> − <operation name="cmdsystem"> <input message="tns:cmdsystemRequest"/> <output message="tns:cmdsystemResponse"/> </operation> − <operation name="isysval"> <input message="tns:isysvalRequest"/> <output message="tns:isysvalResponse"/> </operation> − <operation name="rtvusrprf"> <input message="tns:rtvusrprfRequest"/> <output message="tns:rtvusrprfResponse"/> </operation> − <operation name="rtvallusrprf"> <input message="tns:rtvallusrprfRequest"/> <output message="tns:rtvallusrprfResponse"/> </operation> − <operation name="GICORST1"> <input message="tns:GICORST1Request"/> <output message="tns:GICORST1Response"/> </operation> − <operation name="loadCadeaux"> <input message="tns:loadCadeauxRequest"/> <output message="tns:loadCadeauxResponse"/> </operation> − <operation name="loadReservations"> <input message="tns:loadReservationsRequest"/> <output message="tns:loadReservationsResponse"/> </operation> − <operation name="query_points"> <input message="tns:query_pointsRequest"/> <output message="tns:query_pointsResponse"/> </operation> − <operation name="fid_authAdd"> <input message="tns:fid_authAddRequest"/> <output message="tns:fid_authAddResponse"/> </operation> − <operation name="fid_authMod"> <input message="tns:fid_authModRequest"/> <output message="tns:fid_authModResponse"/> </operation> − <operation name="keyED"> <input message="tns:keyEDRequest"/> <output message="tns:keyEDResponse"/> </operation> − <operation name="encrypt"> <input message="tns:encryptRequest"/> <output message="tns:encryptResponse"/> </operation> − <operation name="decrypt"> <input message="tns:decryptRequest"/> <output message="tns:decryptResponse"/> </operation> − <operation name="fid_auth"> <input message="tns:fid_authRequest"/> <output message="tns:fid_authResponse"/> </operation> − <operation name="add_userAcc"> <input message="tns:add_userAccRequest"/> <output message="tns:add_userAccResponse"/> </operation> − <operation name="get_usersAcc"> <input message="tns:get_usersAccRequest"/> <output message="tns:get_usersAccResponse"/> </operation> − <operation name="query_delete"> <input message="tns:query_deleteRequest"/> <output message="tns:query_deleteResponse"/> </operation> − <operation name="query_update"> <input message="tns:query_updateRequest"/> <output message="tns:query_updateResponse"/> </operation> − <operation name="getAllItems"> <input message="tns:getAllItemsRequest"/> <output message="tns:getAllItemsResponse"/> </operation> − <operation name="getItem"> <input message="tns:getItemRequest"/> <output message="tns:getItemResponse"/> </operation> − <operation name="createItem"> <input message="tns:createItemRequest"/> <output message="tns:createItemResponse"/> </operation> − <operation name="updateItem"> <input message="tns:updateItemRequest"/> <output message="tns:updateItemResponse"/> </operation> − <operation name="deleteItem"> <input message="tns:deleteItemRequest"/> <output message="tns:deleteItemResponse"/> </operation> − <operation name="count"> <input message="tns:countRequest"/> <output message="tns:countResponse"/> </operation> − <operation name="getItems_paged"> <input message="tns:getItems_pagedRequest"/> <output message="tns:getItems_pagedResponse"/> </operation> </portType> − <binding name="db2servicesBinding" type="tns:db2servicesPort"> <soap:binding style="document" transport="http://framework.zend.com"/> − <operation name="db2services"> <soap:operation soapAction="http://addressedemonfichierphp#db2services"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="sayHello"> // ma fonction test <soap:operation soapAction="http://addressedemonfichierphp#sayHello"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="isConnect"> <soap:operation soapAction="http://addressedemonfichierphp#isConnect"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="query_multi03"> <soap:operation soapAction="http://addressedemonfichierphp#query_multi03"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="iconnect"> <soap:operation soapAction="http://addressedemonfichierphp#iconnect"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="iwrkactjob"> <soap:operation soapAction="http://addressedemonfichierphp#iwrkactjob"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="isystem"> <soap:operation soapAction="http://addressedemonfichierphp#isystem"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="cmdsystem"> <soap:operation soapAction="http://addressedemonfichierphp#cmdsystem"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="isysval"> <soap:operation soapAction="http://addressedemonfichierphp#isysval"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="rtvusrprf"> <soap:operation soapAction="http://addressedemonfichierphp#rtvusrprf"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="rtvallusrprf"> <soap:operation soapAction="http://addressedemonfichierphp#rtvallusrprf"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="GICORST1"> <soap:operation soapAction="http://addressedemonfichierphp#GICORST1"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="loadCadeaux"> <soap:operation soapAction="http://addressedemonfichierphp#loadCadeaux"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="loadReservations"> <soap:operation soapAction="http://addressedemonfichierphp#loadReservations"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="query_points"> <soap:operation soapAction="http://addressedemonfichierphp#query_points"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="fid_authAdd"> <soap:operation soapAction="http://addressedemonfichierphp#fid_authAdd"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="fid_authMod"> <soap:operation soapAction="http://addressedemonfichierphp#fid_authMod"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="keyED"> <soap:operation soapAction="http://addressedemonfichierphp#keyED"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="encrypt"> <soap:operation soapAction="http://addressedemonfichierphp#encrypt"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="decrypt"> <soap:operation soapAction="http://addressedemonfichierphp#decrypt"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="fid_auth"> <soap:operation soapAction="http://addressedemonfichierphp#fid_auth"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="add_userAcc"> <soap:operation soapAction="http://addressedemonfichierphp#add_userAcc"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="get_usersAcc"> <soap:operation soapAction="http://addressedemonfichierphp#get_usersAcc"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="query_delete"> <soap:operation soapAction="http://addressedemonfichierphp#query_delete"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="query_update"> <soap:operation soapAction="http://addressedemonfichierphp#query_update"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="getAllItems"> <soap:operation soapAction="http://addressedemonfichierphp#getAllItems"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="getItem"> <soap:operation soapAction="http://addressedemonfichierphp#getItem"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="createItem"> <soap:operation soapAction="http://addressedemonfichierphp#createItem"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="updateItem"> <soap:operation soapAction="http://addressedemonfichierphp#updateItem"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="deleteItem"> <soap:operation soapAction="http://addressedemonfichierphp#deleteItem"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="count"> <soap:operation soapAction="http://addressedemonfichierphp#count"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> − <operation name="getItems_paged"> <soap:operation soapAction="http://addressedemonfichierphp#getItems_paged"/> − <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> − <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> </binding> − <service name="db2servicesService"> − <port name="db2servicesPort" binding="tns:db2servicesBinding"> <soap:address location="http://addressedemonfichierphp"/> </port> </service> <message name="db2servicesRequest"/> <message name="sayHelloRequest"/> − <message name="sayHelloResponse"> <part name="return" type="xsd:string"/> </message> − <message name="isConnectRequest"> <part name="user" type="xsd:anyType"/> <part name="pass" type="xsd:anyType"/> </message> − <message name="query_multi03Request"> <part name="requete" type="xsd:anyType"/> </message> − <message name="iconnectRequest"> <part name="user" type="xsd:anyType"/> <part name="pass" type="xsd:anyType"/> </message> <message name="iwrkactjobRequest"/> − <message name="isystemRequest"> <part name="cmdsys" type="xsd:anyType"/> </message> − <message name="cmdsystemRequest"> <part name="cmdsys" type="xsd:anyType"/> </message> − <message name="isysvalRequest"> <part name="sysval" type="xsd:anyType"/> </message> − <message name="rtvusrprfRequest"> <part name="user" type="xsd:anyType"/> </message> <message name="rtvallusrprfRequest"/> − <message name="GICORST1Request"> <part name="stgrp" type="xsd:anyType"/> <part name="stdos" type="xsd:anyType"/> <part name="articl" type="xsd:anyType"/> <part name="client" type="xsd:anyType"/> <part name="eous" type="xsd:anyType"/> <part name="code" type="xsd:anyType"/> <part name="stkcli" type="xsd:anyType"/> <part name="maga" type="xsd:anyType"/> <part name="ldaprf" type="xsd:anyType"/> <part name="taj1" type="xsd:anyType"/> <part name="taj2" type="xsd:anyType"/> <part name="taj3" type="xsd:anyType"/> <part name="taj4" type="xsd:anyType"/> <part name="taj5" type="xsd:anyType"/> </message> <message name="loadCadeauxRequest"/> − <message name="loadReservationsRequest"> <part name="numclient" type="xsd:anyType"/> </message> − <message name="query_pointsRequest"> <part name="requete" type="xsd:anyType"/> </message> − <message name="fid_authAddRequest"> <part name="user" type="xsd:anyType"/> <part name="pass" type="xsd:anyType"/> <part name="maga" type="xsd:anyType"/> </message> − <message name="fid_authModRequest"> <part name="user" type="xsd:anyType"/> <part name="pass" type="xsd:anyType"/> <part name="maga" type="xsd:anyType"/> </message> − <message name="keyEDRequest"> <part name="txt" type="xsd:anyType"/> </message> − <message name="encryptRequest"> <part name="txt" type="xsd:anyType"/> </message> − <message name="decryptRequest"> <part name="txt" type="xsd:anyType"/> </message> − <message name="fid_authRequest"> <part name="user" type="xsd:anyType"/> <part name="pass" type="xsd:anyType"/> </message> − <message name="add_userAccRequest"> <part name="user" type="xsd:anyType"/> <part name="objet" type="xsd:anyType"/> <part name="droit" type="xsd:anyType"/> </message> − <message name="get_usersAccRequest"> <part name="userac" type="xsd:anyType"/> </message> − <message name="query_deleteRequest"> <part name="sqlstr" type="xsd:anyType"/> </message> − <message name="query_updateRequest"> <part name="sqlstr" type="xsd:anyType"/> </message> <message name="getAllItemsRequest"/> − <message name="getItemRequest"> <part name="itemID" type="xsd:anyType"/> </message> − <message name="createItemRequest"> <part name="item" type="xsd:anyType"/> </message> − <message name="updateItemRequest"> <part name="item" type="xsd:anyType"/> </message> − <message name="deleteItemRequest"> <part name="itemID" type="xsd:anyType"/> </message> <message name="countRequest"/> − <message name="getItems_pagedRequest"> <part name="startIndex" type="xsd:anyType"/> <part name="numItems" type="xsd:anyType"/> </message> </definitions>
Concernant le client (moi ^_^):
j'essaie d'y accéder via une fonction test, l'AS400 étant en production :
<?php require_once ('Zend/Soap/Client.php'); $client = new Zend_Soap_Client('http://addressedemonfichierphp?wsdl'); try { $resultat = $client->__call(null, 'sayHello'); } catch(Exception $e){ echo $e; } echo $resultat; // Ajoutes des infos sur l'erreur : echo "<pre>\n"; // Retourne la requete envoyée au serveur echo "Request :\n".htmlspecialchars($client ->__getLastRequest()) ."\n"; // Retourne la vraie réponse construite sur le serveur //(souvent le message d'erreur produit dans le script du serveur //que tu ne voies pas) echo "Response:\n".htmlspecialchars($client ->__getLastResponse())."\n"; echo "</pre>"; ?>
Comme vous pouvez le voir j'utilise le ZEND FRAMEWORK version ZendCore-2.5.2 et PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch.
Et quand je teste ma fonction de test je reçois le message :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: PHP-SOAP doesn't support transport 'http://framework.zend.com' in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php:50 Stack trace: #0 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php(50): SoapClient->SoapClient('http://@IP_AS400...', Array) #1 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(971): Zend_Soap_Client_Common->__construct(Array, 'http://@IP_AS400...', Array) #2 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(1052): Zend_Soap_Client->_initSoapClientObject() #3 [internal function]: Zend_Soap_Client->__call('__getLastReques...', Array) #4 /home/patrick/test/zend_test/ZendFramework/library/test_client_soap.php(28): Zend_Soap_Client->__getLastRequest() #5 {main} thrown in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php on line 50
JE ne sais pas trop quoi faire pour y remédier Quelqu'un pourrait me conseiller plzz...
Hors ligne
il ne parvient pas à lire ton WSDL
dans un premier temps fait en une copie sur ton serveur php
et charge le directement sans passer par l'url
tu peux alors le modifier pour le réduire au minimum et ne garder que le stric necessaire.
visiblement il y a une erreur dans le XML du WSDL
ce n'est pas simple à trouver.
A+JYT
Hors ligne
ok je vais tester sa.
Merci pour la réponse.
Je vous tiens au courant.
Dernière modification par cocodidon (15-06-2009 20:14:24)
Hors ligne
pffff j'y comprends rien j'ai réduit le wsdl au minimun
<definitions name="db2services" targetNamespace="http://localhost/test/zend_test/ZendFramework/library/db2services.wsdl"> <portType name="db2servicesPort"> <operation name="sayHello"> <input message="tns:sayHelloRequest"/> <output message="tns:sayHelloResponse"/> </operation> </portType> <binding name="db2servicesBinding" type="tns:db2servicesPort"> <soap:binding style="document" transport="http://framework.zend.com"/> <operation name="sayHello"> <soap:operation soapAction="db2services.wsdl#sayHello"/> <input> <soap:body use="literal" namespace="http://framework.zend.com"/> </input> <output> <soap:body use="literal" namespace="http://framework.zend.com"/> </output> </operation> </binding> <service name="db2servicesService"> <port name="db2servicesPort" binding="tns:db2servicesBinding"> <soap:address location="db2services.wsdl"/> </port> </service> <message name="sayHelloRequest"/> <message name="sayHelloResponse"> <part name="return" type="xsd:string"/> </message> </definitions>
Je le chage en local (fichier.wsdl) j'appelle toujours ma fonction de test :
<?php require_once ('Zend/Soap/Client.php'); $client = new Zend_Soap_Client('db2services.wsdl'); try { $resultat = $client->__call('sayHello', null); echo $resultat; } catch(Exception $e){ echo $e; } // Ajoutes des infos sur l'erreur : echo "<pre>\n"; // Retourne la requete envoyée au serveur echo "Request :\n".htmlspecialchars($client ->__getLastRequest()) ."\n"; // Retourne la vraie réponse construite sur le serveur //(souvent le message d'erreur produit dans le script du serveur //que tu ne voies pas) echo "Response:\n".htmlspecialchars($client ->__getLastResponse())."\n"; echo "</pre>"; ?>
et la j'obtiens :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't find <definitions> in '/home/patrick/test/zend_test/ZendFramework/library/db2services.wsdl' in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php:50 Stack trace: #0 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php(50): SoapClient->SoapClient('db2services.wsd...', Array) #1 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(971): Zend_Soap_Client_Common->__construct(Array, 'db2services.wsd...', Array) #2 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(1052): Zend_Soap_Client->_initSoapClientObject() #3 [internal function]: Zend_Soap_Client->__call('__getLastReques...', Array) #4 /home/patrick/test/zend_test/ZendFramework/library/test_client_soap.php(30): Zend_Soap_Client->__getLastRequest() #5 {main} thrown in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php on line 50
J'y comprends vraiment rien à tout çà...
Hors ligne
Il me dit ne pas trouver <definitions> alors que c'est bien présent dans le fichier....
Hors ligne
Bon en continuant mes investigations, j'ai rajouté certaines infos au xml :
<definitions name="db2services" targetNamespace="urn:http://localhost/test/zend_test/ZendFramework/library/db2services.wsdl" xmlns:typens="urn:http://localhost/test/zend_test/ZendFramework/library/db2services.wsdl" xmlns:xsd="http://w3.org/2001/XMLSchema" 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/">
et maintenant j'ai un autre message d'erreur :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: PHP-SOAP doesn't support transport 'http://framework.zend.com' in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php:50 Stack trace: #0 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php(50): SoapClient->SoapClient('db2services.wsd...', Array) #1 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(971): Zend_Soap_Client_Common->__construct(Array, 'db2services.wsd...', Array) #2 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(1052): Zend_Soap_Client->_initSoapClientObject() #3 /home/patrick/test/zend_test/ZendFramework/library/test_client_soap.php(21): Zend_Soap_Client->__call('sayHello', NULL) #4 {main} thrown in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php on line 50
Il s'agirait du mode de transport qui ne serait pas supporté.
Sa veux dire quoi à votre avis??
Quelqu'un aurait-il une idée plzz ??
Dernière modification par cocodidon (15-06-2009 20:16:53)
Hors ligne
le transport doit
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
A+JYT
Hors ligne
Ok. j'essayerais.
Merci pour les réponses.
Dernière modification par cocodidon (16-06-2009 14:51:25)
Hors ligne
Bon faut croire que les WS ne sont pas avec moi
Alors vu qu'avec l'AS400 cela s'avère difficile j'ai décidé de faire simple(enfin je pensais que c'était simple).
J'ai créé la classe suivante :
<?php require_once ('Zend/Soap/AutoDiscover.php'); require_once ('Zend/Soap/Server.php'); // La classe qui va gérer les requètes SOAP class HelloWorld { // Méthode function SayHello() { return "Hello world"; } } $autodiscover = new Zend_Soap_AutoDiscover(); $autodiscover -> setClass('HelloWorld'); $autodiscover -> handle(); ?>
qui me génère le wsdl suivant :
<definitions name="HelloWorld" targetNamespace="http://localhost/test/zend_test/ZendFramework/library/test_server_soap.php"> − <portType name="HelloWorldPort"> − <operation name="SayHello"> <input message="tns:SayHelloRequest"/> <output message="tns:SayHelloResponse"/> </operation> </portType> − <binding name="HelloWorldBinding" type="tns:HelloWorldPort"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> − <operation name="SayHello"> <soap:operation soapAction="http://localhost/test/zend_test/ZendFramework/library/test_server_soap.php#SayHello"/> − <input> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> − <output> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> − <service name="HelloWorldService"> − <port name="HelloWorldPort" binding="tns:HelloWorldBinding"> <soap:address location="http://localhost/test/zend_test/ZendFramework/library/test_server_soap.php"/> </port> </service> <message name="SayHelloRequest"/> </definitions>
et j'essaie de l'appeler ainsi :
<?php ini_set('soap.wsdl_cache_enabled', 0); require_once ('Zend/Soap/Client.php'); require_once ('Zend/Soap/Client/Exception.php'); $parametres = array('trace' => 1, 'soap_version' => SOAP_1_2 ); try { $client = new Zend_Soap_Client('http://localhost/test/zend_test/ZendFramework/library/test_server_soap.php?wsdl'); $resultat = $client->__call('HelloWorld', null); echo $resultat; } catch(Zend_Exception $e) { echo "<i><u>Message d'erreur retourné:</u></i> " . $e->getMessage(); } ?>
cette fois je travaille en local. Et quand j'invoque ma méthode j'ai le message suivant :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Missing <message> with name 'tns:SayHelloResponse' in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php:50 Stack trace: #0 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php(50): SoapClient->SoapClient('http://localhos...', Array) #1 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(971): Zend_Soap_Client_Common->__construct(Array, 'http://localhos...', Array) #2 /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client.php(1052): Zend_Soap_Client->_initSoapClientObject() #3 /home/patrick/test/zend_test/ZendFramework/library/test_client_soap.php(16): Zend_Soap_Client->__call('HelloWorld', NULL) #4 {main} thrown in /home/patrick/test/zend_test/ZendFramework/library/Zend/Soap/Client/Common.php on line 50
Quelqu'un saurait ce que cela signifie? J'y comprend rien.
Il me dit ne pas trouver une information que je distingue tres bien. Comment le lui faire prendre en compte?????
Il y aurait une erreur quelque part mais je ne la trouve paaaaaaaaaaaas..................................
Merci pour votre aide
Dernière modification par cocodidon (16-06-2009 17:22:16)
Hors ligne