Bonjour à tous,
pour commencer, je dispose d'une ancienne version de Talend, la version 4. J'ai beaucoup de mal à trouver de la documentation sur cette version. Si vous savez où je peut trouver cela, ça pourrais déjà bien m'aider.
Je cherche à faire fonctionner le composant TWebServiceInput, le seul composant existant en version 4 de talend.
Ci-dessous le wsdl : (j'ai enlevé la première partie)
Code XML : 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 <wsdl:message name="IClesExternes_GetCleExterne_InputMessage"> <wsdl:part name="parameters" element="tns:GetCleExterne"/> </wsdl:message> <wsdl:message name="IClesExternes_GetCleExterne_OutputMessage"> <wsdl:part name="parameters" element="tns:GetCleExterneResponse"/> </wsdl:message> <wsdl:message name="IClesExternes_MiseAJourCleExterne_InputMessage"> <wsdl:part name="parameters" element="tns:MiseAJourCleExterne"/> </wsdl:message> <wsdl:message name="IClesExternes_MiseAJourCleExterne_OutputMessage"> <wsdl:part name="parameters" element="tns:MiseAJourCleExterneResponse"/> </wsdl:message> <wsdl:message name="IClesExternes_SuppressionCleExterne_InputMessage"> <wsdl:part name="parameters" element="tns:SuppressionCleExterne"/> </wsdl:message> <wsdl:message name="IClesExternes_SuppressionCleExterne_OutputMessage"> <wsdl:part name="parameters" element="tns:SuppressionCleExterneResponse"/> </wsdl:message> <wsdl:message name="IClesExternes_CreationCleExterne_InputMessage"> <wsdl:part name="parameters" element="tns:CreationCleExterne"/> </wsdl:message> <wsdl:message name="IClesExternes_CreationCleExterne_OutputMessage"> <wsdl:part name="parameters" element="tns:CreationCleExterneResponse"/> </wsdl:message> <wsdl:portType name="IClesExternes"> <wsdl:operation name="GetCleExterne"> <wsdl:input wsaw:Action="http://tempuri.org/IClesExternes/GetCleExterne" message="tns:IClesExternes_GetCleExterne_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IClesExternes/GetCleExterneResponse" message="tns:IClesExternes_GetCleExterne_OutputMessage"/> </wsdl:operation> <wsdl:operation name="MiseAJourCleExterne"> <wsdl:input wsaw:Action="http://tempuri.org/IClesExternes/MiseAJourCleExterne" message="tns:IClesExternes_MiseAJourCleExterne_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IClesExternes/MiseAJourCleExterneResponse" message="tns:IClesExternes_MiseAJourCleExterne_OutputMessage"/> </wsdl:operation> <wsdl:operation name="SuppressionCleExterne"> <wsdl:input wsaw:Action="http://tempuri.org/IClesExternes/SuppressionCleExterne" message="tns:IClesExternes_SuppressionCleExterne_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IClesExternes/SuppressionCleExterneResponse" message="tns:IClesExternes_SuppressionCleExterne_OutputMessage"/> </wsdl:operation> <wsdl:operation name="CreationCleExterne"> <wsdl:input wsaw:Action="http://tempuri.org/IClesExternes/CreationCleExterne" message="tns:IClesExternes_CreationCleExterne_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IClesExternes/CreationCleExterneResponse" message="tns:IClesExternes_CreationCleExterne_OutputMessage"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="BasicHttpBinding_IClesExternes" type="tns:IClesExternes"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetCleExterne"> <soap:operation soapAction="http://tempuri.org/IClesExternes/GetCleExterne" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="MiseAJourCleExterne"> <soap:operation soapAction="http://tempuri.org/IClesExternes/MiseAJourCleExterne" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="SuppressionCleExterne"> <soap:operation soapAction="http://tempuri.org/IClesExternes/SuppressionCleExterne" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="CreationCleExterne"> <soap:operation soapAction="http://tempuri.org/IClesExternes/CreationCleExterne" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="ClesExternes"> <wsdl:port name="BasicHttpBinding_IClesExternes" binding="tns:BasicHttpBinding_IClesExternes"> <soap:address location=""/> </wsdl:port> </wsdl:service> </wsdl:definitions>
La méthode qui nous intéresse vraiment est CreationCleExterne
la requête de cette méthode, dans SoapUI :
Code XML : 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
22
23
24
25
26
27
28
29
30
31 <soapenv:Envelope xmlns:soapenv="" xmlns:tem="" xmlns:ody="" xmlns:ody1=""> <soapenv:Header/> <soapenv:Body> <tem:CreationCleExterne> <!--Optional:--> <tem:cleExterne> <!--Optional:--> <ody:Authentication> <!--Optional:--> <ody:Password>?</ody:Password> <!--Optional:--> <ody:SID>?</ody:SID> <!--Optional:--> <ody:Token>?</ody:Token> <!--Optional:--> <ody:User>?</ody:User> <!--Optional:--> <ody:UserAD>?</ody:UserAD> </ody:Authentication> <!--Optional:--> <ody1:Application>?</ody1:Application> <!--Optional:--> <ody1:CleEntite>?</ody1:CleEntite> <!--Optional:--> <ody1:CleExterne>?</ody1:CleExterne> <!--Optional:--> <ody1:TypeEntite>?</ody1:TypeEntite> </tem:cleExterne> </tem:CreationCleExterne> </soapenv:Body> </soapenv:Envelope>
Jusque là tout va bien.
L'éditeur du progiciel, celui qui a mis en place le wsdl nous affirme qu'il n'y a, pour le moment pas besoin d'identification.
Les seuls arguments nécessaires sont Application, TypeEntite, CleEntite et CleExterne. Les deux premiers sont fixes, CleEntité est une valeur qui nous permettra de retrouver une personne dans le progiciel et CleExterne est une valeur que l'on insère dans le progiciel (depuis un autre).
Sur SoapUI, la requête suivante marche très bien
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <soapenv:Body> <tem:CreationCleExterne> <tem:cleExterne> <ody1:Application>HR</ody1:Application> <ody1:CleEntite>147</ody1:CleEntite> <ody1:CleExterne>99999</ody1:CleExterne> <ody1:TypeEntite>0</ody1:TypeEntite> </tem:cleExterne> </tem:CreationCleExterne> </soapenv:Body>
Mais sur talend, erreur !
avec comme erreur :
Je crois comprendre qu'il ne nécessite qu'un seul argument du coup et, c'est vrai, lorsque je regarde la structure de la requête sur SoapUI, les arguments sont derrière une autre balise tem.Exception in component tWebServiceInput_2
java.lang.RuntimeException: Need 1 arguments!!!
at org.talend.DynamicInvoker.invokeMethod(DynamicInvoker.java:323)
at org.talend.DynamicInvoker.main(DynamicInvoker.java:189)
at org.talend.DynamicInvoker.main(DynamicInvoker.java:130)
at webservice.temp_0_1.temp.tWebServiceInput_2Process(temp.java:583)
at webservice.temp_0_1.temp.runJobInTOS(temp.java:1063)
at webservice.temp_0_1.temp.main(temp.java:819)
Mon problème du coup réside dans l'écriture de ces arguments dans les paramètres du composant talend. J'ai essayé de l’écrire dans une seul ligne, mais je ne vois pas bien comment.
Autre problème que je me pose en amont également, c'est que je n'ai pas à remplir tous les arguments, du coup je me demande comment Talend va arriver à matcher ce que je vais lui donner avec ce que ça correspond réellement.
Je n'y connais franchement pas grand chose en webservice, il est donc possible que je n'ai pas tout bien expliqué, n’hésitez pas à me demander si besoin.
Merci par avance !
Partager