Bonjour !

Je suis en train de réaliser un client qui doit effectuer des appels à plusieurs web services différents. (avec axis 1.4)
Seulement je ne suis pas sûr de comprendre le fonctionnement des passages de paramètres, le type de retour etc...

voici mon code actuel :
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
try {
	//étape 1 : création d'accès vers le service
	Service service = new Service();
 
	//étape 2 :création d'un appel vers le service
	Call call = (Call)service.createCall();//new javax.xml.namespace.QName("http://ejb.service.access.***"), new javax.xml.namespace.QName("lirePersonne"));
 
	//étape 3 : récupération de l'adresse URL du service accédé
	String endpoint = "http://***/services/CRMPersonne";
	call.setTargetEndpointAddress(endpoint);
 
	call.setOperationName(new QName("lirePersonne"));
 
	call.addParameter("arg_0_1", new QName("ServiceContexte"), ParameterMode.IN);
	call.addParameter("arg_1_1", new QName("String"), ParameterMode.IN);
	call.setReturnType(XMLType.SOAP_ARRAY);
	Personne myperson = (Personne)call.invoke( new Object [] { new QName("123461199") });
 
} catch (Exception e) {
	e.printStackTrace();
}
Mon erreur de retour est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: javax.xml.rpc.JAXRPCException: Number of parameters passed in (1) doesn't match the number of IN/INOUT parameters (2) from the addParameter() calls
 faultActor: 
 faultNode:
Donc ok il faut que je mette le deuxième argument dans le Object, mais je ne suis pas sûr de savoir quoi mettre ni du reste de mon code.

Voici le body de la requête soap :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
   <soapenv:Body>
      <ejb:lirePersonne>
         <arg_0_1>
            <codeApplication>${#Project#codeApplication}</codeApplication>
            <jetonApplication>${#Project#jetonApplication}</jetonApplication>
            <traitementId>${#Project#timestampTest}</traitementId>
            <utilisateur>${#Project#utilisateur}</utilisateur>
         </arg_0_1>
         <arg_1_1>
            <identifiantPersonne>123461199</identifiantPersonne><infosPersonne xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><infosPersonne><budget xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><charges xsi:nil="true"/></budget><budget xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><signaletique xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><nommage xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><situationFamiliale xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><situationProfessionnelle><employeur><adresseTelephonique xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><adresseTelephonique xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><adresseEmail xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><adressePostale xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><profilAdresse xsi:nil="true"/></adressePostale></employeur><employeur xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></situationProfessionnelle><adresse><adressePostale xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><profilAdresse xsi:nil="true"/></adressePostale><adressePostale xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><adresseEmail xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><adresseTelephonique xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></adresse><relationPersonne xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><profilPersonne xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><profilClient xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><qualite xsi:nil="true"/></profilClient><salarie xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><recrutementStructure><magasin xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><magasin xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><reseau xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><sousReseau xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><enseigne xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><portefeuille xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><societeJuridique><adresse xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><profilAdresse xsi:nil="true"/></adresse><adresse xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><mentionsLegales xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></societeJuridique><uniteGestion xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><agence xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><uniteComptable xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></recrutementStructure><profilProspect xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><encours xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></infosPersonne><intervenant xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         </arg_1_1>
      </ejb:lirePersonne>
   </soapenv:Body>
Quand je disais je ne suis pas sûr de mon code, c'est parce que pour le premier argument arg_0_1, je suis censé passé 4 paramètres, ce que je n'ai pas fait parce que je ne sais pas comment m'y prendre...

Donc voici mon problème!

J'ai aussi une autre question.
Est-il possible de réaliser un appel de service directement en spécifiant tout le contenu du message soap envoyé et de récupérer le contenu du retour ?

Merci de m'éclairer.