C#/SOAP/PHP5 Probleme webservice

C#/SOAP/PHP5 Probleme webservice - PHP - Programmation

Marsh Posté le 05-01-2008 à 19:07:17    

Bonjour à tous,
 
J'ai un petit soucis pour mettre en place un webservice PHP5 et un client en C# . Je teste avec un simple Hello World.
le webservice est basé sur un wsdl.  
Lorsque j'execute mon client C# j'ai le message suivant :
Incompatibilité de version SOAP possible : l'espace de noms enveloppe http://schemas.xmlsoap.org/wsdl/ était inattendu. http://schemas.xmlsoap.org/soap/envelope/ attendu.
Je suis sous le framework2 de C#, j'ai testé le webservice avec un client perl (SOAP::Lite) et cela fonctionne très bien.  
Avez vous une idée ? :(
Voici le wsdl:  

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <definitions name="HelloService"
  3.    targetNamespace="http://127.0.0.1/soap/hello.wsdl"
  4.    xmlns="http://schemas.xmlsoap.org/wsdl/"
  5.    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  6.    xmlns:tns="http://127.0.0.1/soap/hello.wsdl"
  7.    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  8.    <message name="SayHelloRequest">
  9.       <part name="firstName" type="xsd:string"/>
  10.    </message>
  11.    <message name="SayHelloResponse">
  12.       <part name="greeting" type="xsd:string"/>
  13.    </message>
  14.    <portType name="Hello_PortType">
  15.       <operation name="sayHello">
  16.          <input message="tns:SayHelloRequest"/>
  17.          <output message="tns:SayHelloResponse"/>
  18.       </operation>
  19.    </portType>
  20.  
  21.    <binding name="Hello_Binding" type="tns:Hello_PortType">
  22.       <soap:binding style="rpc"
  23.          transport="http://schemas.xmlsoap.org/soap/http"/>
  24.       <operation name="sayHello">
  25.          <soap:operation soapAction="sayHello"/>
  26.          <input>
  27.             <soap:body
  28.                encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  29.                namespace="urn:examples:helloservice"
  30.                use="encoded"/>
  31.          </input>
  32.          <output>
  33.             <soap:body
  34.                encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  35.                namespace="urn:examples:helloservice"
  36.                use="encoded"/>
  37.          </output>
  38.       </operation>
  39.    </binding>
  40.    <service name="HelloService">
  41.       <documentation>WSDL File for HelloService</documentation>
  42.       <port binding="tns:Hello_Binding" name="Hello_Port">
  43.  
  44.          <soap:address
  45. location="http://127.0.0.1/soap/hello_soap.php"/>
  46.       </port>
  47.    </service>
  48. </definitions>


 
Merci d'avance de votre aide  
Cordialement
Junt


Message édité par Junt le 05-01-2008 à 19:20:51
Reply

Marsh Posté le 05-01-2008 à 19:07:17   

Reply

Marsh Posté le 06-01-2008 à 15:01:47    

Je te poste un wsdl à moi, pas le temps d'épurer mais je crois qu'il te manque des urn:
 

Code :
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <definitions name="provider" targetNamespace="urn:provider" xmlns:typens="urn:provider" xmlns:xsd="http://www.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/">
  3. <message name="__construct"/>
  4. <message name="__constructResponse"/>
  5. <message name="__destruct"/>
  6. <message name="__destructResponse"/>
  7. <message name="getTicket">
  8.  <part name="xml" type="xsd:string"/>
  9. </message>
  10. <message name="getTicketResponse">
  11.  <part name="getTicketReturn" type="xsd:string"/>
  12. </message>
  13. <message name="payTicket">
  14.  <part name="xml" type="xsd:string"/>
  15. </message>
  16. <message name="payTicketResponse">
  17.  <part name="payTicketReturn" type="xsd:string"/>
  18. </message>
  19. <message name="getTicketStatus">
  20.  <part name="xml" type="xsd:string"/>
  21. </message>
  22. <message name="getTicketStatusResponse">
  23.  <part name="getTicketStatusReturn" type="xsd:string"/>
  24. </message>
  25. <portType name="ProviderPortType">
  26.  <documentation>
  27.   This class provides basic web services
  28.  </documentation>
  29.  <operation name="__construct">
  30.   <documentation>
  31.    Constructs the class.
  32.   </documentation>
  33.   <input message="typens:__construct"/>
  34.   <output message="typens:__constructResponse"/>
  35.  </operation>
  36.  <operation name="__destruct">
  37.   <documentation>
  38.    Destroys the class.
  39.   </documentation>
  40.   <input message="typens:__destruct"/>
  41.   <output message="typens:__destructResponse"/>
  42.  </operation>
  43.  <operation name="getTicket">
  44.   <documentation>
  45.    Gets a ticket.
  46.   </documentation>
  47.   <input message="typens:getTicket"/>
  48.   <output message="typens:getTicketResponse"/>
  49.  </operation>
  50.  <operation name="payTicket">
  51.   <documentation>
  52.    Pays a ticket.
  53.   </documentation>
  54.   <input message="typens:payTicket"/>
  55.   <output message="typens:payTicketResponse"/>
  56.  </operation>
  57.  <operation name="getTicketStatus">
  58.   <documentation>
  59.    Get a ticket status.
  60.   </documentation>
  61.   <input message="typens:getTicketStatus"/>
  62.   <output message="typens:getTicketStatusResponse"/>
  63.  </operation>
  64. </portType>
  65. <binding name="ProviderBinding" type="typens:ProviderPortType">
  66.  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  67.  <operation name="__construct">
  68.   <soap:operation soapAction="urn:ProviderAction"/>
  69.   <input>
  70.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  71.   </input>
  72.   <output>
  73.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  74.   </output>
  75.  </operation>
  76.  <operation name="__destruct">
  77.   <soap:operation soapAction="urn:ProviderAction"/>
  78.   <input>
  79.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  80.   </input>
  81.   <output>
  82.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  83.   </output>
  84.  </operation>
  85.  <operation name="getTicket">
  86.   <soap:operation soapAction="urn:ProviderAction"/>
  87.   <input>
  88.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  89.   </input>
  90.   <output>
  91.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  92.   </output>
  93.  </operation>
  94.  <operation name="payTicket">
  95.   <soap:operation soapAction="urn:ProviderAction"/>
  96.   <input>
  97.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  98.   </input>
  99.   <output>
  100.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  101.   </output>
  102.  </operation>
  103.  <operation name="getTicketStatus">
  104.   <soap:operation soapAction="urn:ProviderAction"/>
  105.   <input>
  106.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  107.   </input>
  108.   <output>
  109.    <soap:body namespace="urn:provider" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  110.   </output>
  111.  </operation>
  112. </binding>
  113. <service name="providerService">
  114.  <port name="ProviderPort" binding="typens:ProviderBinding">
  115.   <soap:address location="http://127.0.0.1:8080/soap/provider/main.php"/>
  116.  </port>
  117. </service>
  118. </definitions>


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 06-01-2008 à 17:05:32    

Salut CyberDenix,
 
Merci pour ta réponse jai le même problème avec ton WSDL.
Je pense que cela vient d'un probleme du framework2 avec SOAP... mais je n'arrive pas à trouver :(
Junt

Reply

Marsh Posté le 09-01-2008 à 17:10:15    

Salut !
 
Quand tu crée ton service web en PHP, tu peux lui préciser la version de SOAP que tu veux utiliser : 1.1 ou 1.2
 
Sauf erreur, il me semble que les deux versions sont incompatibles entre elles.
Essaye peut-être ça...
 
http://fr.php.net/manual/fr/functi [...] struct.php
 
Lionel.

Reply

Marsh Posté le 30-04-2008 à 15:56:49    

Salut, est-ce que quelqu'un a trouvé la solution à ce problème ? Je bloque et j'ai exactement la même chose.
 
J'ai généré les proxy à l'aide du "Add web reference" de Visual Studio 2008 (je suis en développement web asp.net si jamais). J'ai eu 2 fichiers wsdl générés (QueryOperationsWebServiceService.wsdl et EPCISServicePortType.wsdl). Voici le fichier principal :
 

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <wsdl:definitions xmlns:tns="http://query.repository.epcis.accada.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="urn:epcglobal:epcis:wsdl:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="QueryOperationsWebServiceService" targetNamespace="http://query.repository.epcis.accada.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  3.   <wsdl:import namespace="urn:epcglobal:epcis:wsdl:1" location="http://srvepcis01:8080/accada_epcis/query?wsdl=EPCISServicePortType.wsdl" />
  4.   <wsdl:types />
  5.   <wsdl:binding name="QueryOperationsWebServiceServiceSoapBinding" type="ns1:EPCISServicePortType">
  6.     <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
  7.     <wsdl:operation name="getQueryNames">
  8.       <soap:operation soapAction="" style="document" />
  9.       <wsdl:input name="getQueryNames">
  10.         <soap:body use="literal" />
  11.       </wsdl:input>
  12.       <wsdl:output name="getQueryNamesResponse">
  13.         <soap:body use="literal" />
  14.       </wsdl:output>
  15.       <wsdl:fault name="ImplementationExceptionResponse">
  16.         <soap:fault use="literal" name="ImplementationExceptionResponse" namespace="" />
  17.       </wsdl:fault>
  18.       <wsdl:fault name="ValidationExceptionResponse">
  19.         <soap:fault use="literal" name="ValidationExceptionResponse" namespace="" />
  20.       </wsdl:fault>
  21.       <wsdl:fault name="SecurityExceptionResponse">
  22.         <soap:fault use="literal" name="SecurityExceptionResponse" namespace="" />
  23.       </wsdl:fault>
  24.     </wsdl:operation>
  25.     <wsdl:operation name="unsubscribe">
  26.       <soap:operation soapAction="" style="document" />
  27.       <wsdl:input name="unsubscribe">
  28.         <soap:body use="literal" />
  29.       </wsdl:input>
  30.       <wsdl:output name="unsubscribeResponse">
  31.         <soap:body use="literal" />
  32.       </wsdl:output>
  33.       <wsdl:fault name="ImplementationExceptionResponse">
  34.         <soap:fault use="literal" name="ImplementationExceptionResponse" namespace="" />
  35.       </wsdl:fault>
  36.       <wsdl:fault name="ValidationExceptionResponse">
  37.         <soap:fault use="literal" name="ValidationExceptionResponse" namespace="" />
  38.       </wsdl:fault>
  39.       <wsdl:fault name="NoSuchSubscriptionExceptionResponse">
  40.         <soap:fault use="literal" name="NoSuchSubscriptionExceptionResponse" namespace="" />
  41.       </wsdl:fault>
  42.       <wsdl:fault name="SecurityExceptionResponse">
  43.         <soap:fault use="literal" name="SecurityExceptionResponse" namespace="" />
  44.       </wsdl:fault>
  45.     </wsdl:operation>
  46.     <wsdl:operation name="poll">
  47.       <soap:operation soapAction="" style="document" />
  48.       <wsdl:input name="poll">
  49.         <soap:body use="literal" />
  50.       </wsdl:input>
  51.       <wsdl:output name="pollResponse">
  52.         <soap:body use="literal" />
  53.       </wsdl:output>
  54.       <wsdl:fault name="QueryTooComplexExceptionResponse">
  55.         <soap:fault use="literal" name="QueryTooComplexExceptionResponse" namespace="" />
  56.       </wsdl:fault>
  57.       <wsdl:fault name="ImplementationExceptionResponse">
  58.         <soap:fault use="literal" name="ImplementationExceptionResponse" namespace="" />
  59.       </wsdl:fault>
  60.       <wsdl:fault name="QueryParameterExceptionResponse">
  61.         <soap:fault use="literal" name="QueryParameterExceptionResponse" namespace="" />
  62.       </wsdl:fault>
  63.       <wsdl:fault name="ValidationExceptionResponse">
  64.         <soap:fault use="literal" name="ValidationExceptionResponse" namespace="" />
  65.       </wsdl:fault>
  66.       <wsdl:fault name="QueryTooLargeExceptionResponse">
  67.         <soap:fault use="literal" name="QueryTooLargeExceptionResponse" namespace="" />
  68.       </wsdl:fault>
  69.       <wsdl:fault name="SecurityExceptionResponse">
  70.         <soap:fault use="literal" name="SecurityExceptionResponse" namespace="" />
  71.       </wsdl:fault>
  72.       <wsdl:fault name="NoSuchNameExceptionResponse">
  73.         <soap:fault use="literal" name="NoSuchNameExceptionResponse" namespace="" />
  74.       </wsdl:fault>
  75.     </wsdl:operation>
  76.     <wsdl:operation name="subscribe">
  77.       <soap:operation soapAction="" style="document" />
  78.       <wsdl:input name="subscribe">
  79.         <soap:body use="literal" />
  80.       </wsdl:input>
  81.       <wsdl:output name="subscribeResponse">
  82.         <soap:body use="literal" />
  83.       </wsdl:output>
  84.       <wsdl:fault name="QueryTooComplexExceptionResponse">
  85.         <soap:fault use="literal" name="QueryTooComplexExceptionResponse" namespace="" />
  86.       </wsdl:fault>
  87.       <wsdl:fault name="ImplementationExceptionResponse">
  88.         <soap:fault use="literal" name="ImplementationExceptionResponse" namespace="" />
  89.       </wsdl:fault>
  90.       <wsdl:fault name="SubscriptionControlsExceptionResponse">
  91.         <soap:fault use="literal" name="SubscriptionControlsExceptionResponse" namespace="" />
  92.       </wsdl:fault>
  93.       <wsdl:fault name="QueryParameterExceptionResponse">
  94.         <soap:fault use="literal" name="QueryParameterExceptionResponse" namespace="" />
  95.       </wsdl:fault>
  96.       <wsdl:fault name="ValidationExceptionResponse">
  97.         <soap:fault use="literal" name="ValidationExceptionResponse" namespace="" />
  98.       </wsdl:fault>
  99.       <wsdl:fault name="DuplicateSubscriptionExceptionResponse">
  100.         <soap:fault use="literal" name="DuplicateSubscriptionExceptionResponse" namespace="" />
  101.       </wsdl:fault>
  102.       <wsdl:fault name="SecurityExceptionResponse">
  103.         <soap:fault use="literal" name="SecurityExceptionResponse" namespace="" />
  104.       </wsdl:fault>
  105.       <wsdl:fault name="NoSuchNameExceptionResponse">
  106.         <soap:fault use="literal" name="NoSuchNameExceptionResponse" namespace="" />
  107.       </wsdl:fault>
  108.       <wsdl:fault name="SubscribeNotPermittedExceptionResponse">
  109.         <soap:fault use="literal" name="SubscribeNotPermittedExceptionResponse" namespace="" />
  110.       </wsdl:fault>
  111.       <wsdl:fault name="InvalidURIExceptionResponse">
  112.         <soap:fault use="literal" name="InvalidURIExceptionResponse" namespace="" />
  113.       </wsdl:fault>
  114.     </wsdl:operation>
  115.     <wsdl:operation name="getVendorVersion">
  116.       <soap:operation soapAction="" style="document" />
  117.       <wsdl:input name="getVendorVersion">
  118.         <soap:body use="literal" />
  119.       </wsdl:input>
  120.       <wsdl:output name="getVendorVersionResponse">
  121.         <soap:body use="literal" />
  122.       </wsdl:output>
  123.       <wsdl:fault name="ImplementationExceptionResponse">
  124.         <soap:fault use="literal" name="ImplementationExceptionResponse" namespace="" />
  125.       </wsdl:fault>
  126.       <wsdl:fault name="ValidationExceptionResponse">
  127.         <soap:fault use="literal" name="ValidationExceptionResponse" namespace="" />
  128.       </wsdl:fault>
  129.       <wsdl:fault name="SecurityExceptionResponse">
  130.         <soap:fault use="literal" name="SecurityExceptionResponse" namespace="" />
  131.       </wsdl:fault>
  132.     </wsdl:operation>
  133.     <wsdl:operation name="getStandardVersion">
  134.       <soap:operation soapAction="" style="document" />
  135.       <wsdl:input name="getStandardVersion">
  136.         <soap:body use="literal" />
  137.       </wsdl:input>
  138.       <wsdl:output name="getStandardVersionResponse">
  139.         <soap:body use="literal" />
  140.       </wsdl:output>
  141.       <wsdl:fault name="ImplementationExceptionResponse">
  142.         <soap:fault use="literal" name="ImplementationExceptionResponse" namespace="" />
  143.       </wsdl:fault>
  144.       <wsdl:fault name="ValidationExceptionResponse">
  145.         <soap:fault use="literal" name="ValidationExceptionResponse" namespace="" />
  146.       </wsdl:fault>
  147.       <wsdl:fault name="SecurityExceptionResponse">
  148.         <soap:fault use="literal" name="SecurityExceptionResponse" namespace="" />
  149.       </wsdl:fault>
  150.     </wsdl:operation>
  151.     <wsdl:operation name="getSubscriptionIDs">
  152.       <soap:operation soapAction="" style="document" />
  153.       <wsdl:input name="getSubscriptionIDs">
  154.         <soap:body use="literal" />
  155.       </wsdl:input>
  156.       <wsdl:output name="getSubscriptionIDsResponse">
  157.         <soap:body use="literal" />
  158.       </wsdl:output>
  159.       <wsdl:fault name="ImplementationExceptionResponse">
  160.         <soap:fault use="literal" name="ImplementationExceptionResponse" namespace="" />
  161.       </wsdl:fault>
  162.       <wsdl:fault name="ValidationExceptionResponse">
  163.         <soap:fault use="literal" name="ValidationExceptionResponse" namespace="" />
  164.       </wsdl:fault>
  165.       <wsdl:fault name="SecurityExceptionResponse">
  166.         <soap:fault use="literal" name="SecurityExceptionResponse" namespace="" />
  167.       </wsdl:fault>
  168.       <wsdl:fault name="NoSuchNameExceptionResponse">
  169.         <soap:fault use="literal" name="NoSuchNameExceptionResponse" namespace="" />
  170.       </wsdl:fault>
  171.     </wsdl:operation>
  172.   </wsdl:binding>
  173.   <wsdl:service name="QueryOperationsWebServiceService">
  174.     <wsdl:port name="QueryOperationsWebServicePort" binding="tns:QueryOperationsWebServiceServiceSoapBinding">
  175.       <soap:address location="http://srvepcis01:8080/accada_epcis/query" />
  176.     </wsdl:port>
  177.   </wsdl:service>
  178. </wsdl:definitions>


 
Merci pour votre aide

Reply

Marsh Posté le 15-05-2008 à 15:03:17    

Il suffit en fait de ne pas mettre le "?wsdl" dans le string de l'adresse auquel on se connecte... Faute toute bête, mais l'erreur n'est vraiment pas très explicite..


Message édité par Hrk le 15-05-2008 à 15:03:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed