Requete soap à partir d'un WSDL

Résolu/Fermé
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 - 6 août 2008 à 16:27
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 - 12 sept. 2008 à 00:15
Bonjour,

J'ai un web service qui doit me renvoyer l'état d'une demande à partir de son numero (exemple: id:44 donne etat:running)
Ce wsdl est fait, mais je n'arrive pas à faire la requete (soap?) qui prend l'id et dont la réponse du serveur (axis) serait l'état de la demande.
J'ai "googlelisé" mais les différentes syntaxe que j'ai trouvé ne marche pas (ne sont pas appropriées à mon wsdl ?).

voici mon wsdl :


<?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions targetNamespace="urn:webservices.contactrh.ft.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:webservices.contactrh.ft.com" xmlns:intf="urn:webservices.contactrh.ft.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- 
WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)

  --> 
- <wsdl:types>
- <schema elementFormDefault="qualified" targetNamespace="urn:webservices.contactrh.ft.com" xmlns="http://www.w3.org/2001/XMLSchema">
- <element name="getRequestState">
- <complexType>
- <sequence>
  <element name="in0" type="xsd:string" /> 
  </sequence>
  </complexType>
  </element>
- <element name="getRequestStateResponse">
- <complexType>
- <sequence>
  <element name="getRequestStateReturn" type="xsd:string" /> 
  </sequence>
  </complexType>
  </element>
  </schema>
  </wsdl:types>
- <wsdl:message name="getRequestStateResponse">
  <wsdl:part element="impl:getRequestStateResponse" name="parameters" /> 
  </wsdl:message>
- <wsdl:message name="getRequestStateRequest">
  <wsdl:part element="impl:getRequestState" name="parameters" /> 
  </wsdl:message>
- <wsdl:portType name="ContactRHAccess">
- <wsdl:operation name="getRequestState">
  <wsdl:input message="impl:getRequestStateRequest" name="getRequestStateRequest" /> 
  <wsdl:output message="impl:getRequestStateResponse" name="getRequestStateResponse" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="ContactRHAccessSoapBinding" type="impl:ContactRHAccess">
  <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http/" /> 
- <wsdl:operation name="getRequestState">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="getRequestStateRequest">
  <wsdlsoap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output name="getRequestStateResponse">
  <wsdlsoap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="ContactRHAccessService">
- <wsdl:port binding="impl:ContactRHAccessSoapBinding" name="ContactRHAccess">
  <wsdlsoap:address location="http://localhost:8080/contactRH/services/ContactRHAccess" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>




Si quelqu'un pouvait m'aider à faire ma requete ??

Merci

10 réponses

tu developpes en quoi?
Coté client t'as juste à appelé la fonction implémenté sur le serveur.
Tu peux détailler un peu?
0
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 1
6 août 2008 à 16:41
Pour le moment j'assaie avec un pluging d'eclipse ( http://wscep.sourceforge.net/index.html ), je lui donne l'url, il charge le wsdl. Ensuite il y a un autre champ ou je met ma requete, je valide et j'ai une reponse.
Je sais pas trop mais sur les exemple que j'ai vu (tuto de ce pluging) cela ressemble à :


<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/"
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:n="x">
  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <n:IntToRoman>
      <Int xsi:type="soapenc:long">1992</Int>
    </n:IntToRoman>
  </soap:Body>
</soap:Envelope>



A terme c'est pour mettre dans une activité de Adobe LiveCycle et la requete doit être comme cela, "écrite à la main".

Merci de m'avoir répondu.
0
J'ai eu l'occasion d'utiliser soap avec du php sur un serveur axis justement et avec un webservice dev en java (de toute facon quelque soit la technologie peut importe en quoi est développé le serveur).
Alors n'y connaissant rien en java je pense pas pouvoirr t'aider, dsl.
0
Galfus Messages postés 242 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 novembre 2008 14
6 août 2008 à 17:16
Je ne suis pas sûr de bien comprendre ta question. Si tu veux créer un programme client du web service il suffit de générer le squelette via le plugin eclipse puis d'appeler les méthodes.

Par contre pourquoi vouloir créer une requête à la main ? L'intérêt de SOAP est justement de ne pas avoir à écrire les requêtes à d'abstraire les messages SOAP. Sinon autant développer une servlet qui échange du XML.

Du coup si tu pouvais préciser ce que tu veux faire, je pourrais peut-être t'aider.


<------Galfus------>
In penguin we trust
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Galfus Messages postés 242 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 novembre 2008 14
6 août 2008 à 17:17
au fait que fait ce post dans le forum réseau ?

<------Galfus------>
In penguin we trust
0
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 1
6 août 2008 à 17:27
Je ne savais pas si je devais le mettre dans programmation ou réseaux. Comme c'est du webservice j'ai pensé réseaux.
Je pensais au réseaux en général (serveurs,clients...) pas au hardware.
Désolé.
Je suis obligé de taper une réquete <soap:Envelope ... pour adobe LiveCycle.
Alors je ne sais pas si écrire une requete comme cela c'est du "à la main" ou pas, quoi qu'il en soit je n'utilise pas du java pour faire cela.
De plus la génération de squelette à partir du plugin eclipse ne marche pas (meme avec l'exemple du tuto).
0
Galfus Messages postés 242 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 novembre 2008 14
6 août 2008 à 17:59
Là il me semble que c'est quand même plus un pb de programmation. Mais bon c pas grave un modo nous remettra ça en place.
Pour ton wsdl, je viens de faire le test dans eclipse et le squelette se génère bien.

Bon si j'ai bien compris tu veux simplement envoyer une requête SOAP vers un adobe livecycle. Donc si c'est pas pour développer une application cliente (à priori le web service est fait pour ça) il suffit d'utiliser une appli client comme SOAPUI :

https://sourceforge.net/projects/soapui/

Dans SOAPUI tu rentres le wsdl puis tu renseignes les paramètres en entrée du web service. SOAP UI te génère la requête et tu obtiens la réponse.

<------Galfus------>
In penguin we trust
0
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 1
6 août 2008 à 18:13
Merci d'avoir prit le temps pour regarder cela !!!!
Sur mon eclipse cela ne se génére pas, j'ai essayé sur les versions 3.1, 3.3 et 3.4.
Je teste le lien que tu m'a donné.
Ok, je vois qu'il me génére les requetes.
MERCI, c'est tout à fait ce qu'il me fallait, au moins je suis sur que ma synthaxe est bonne.
0
Galfus Messages postés 242 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 novembre 2008 14
6 août 2008 à 19:40
en fait pour que ça se génère sur eclipse il faut que tu retire les tirets (-) présents un peu partout et là ça marche. mais bon pour utiliser le wsdl avec eclipse il faut coder en java.

A+

<------Galfus------>
0
TheUltimateCaveMan Messages postés 42 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 janvier 2014 1
12 sept. 2008 à 00:15
Je poste un peu tard désolé.
En fait j'ai finalement trouvé, mon problème ne venait pas de la requête mais du fait que l'application n'avait pas le droit d'utiliser ce webservice, j'ai donc rajouté l'IP de la machine au .properties.
Merci d'avoir pris le temps.
0