Bonjour à tous,
J'ai développé un service web MyService en Java (avec Axis2 1.4.1 et XMLBeans).
Ce service comporte une seule opération MyOperation.
En entrée, cette opération accepte un élément MyOperation comportant deux strings in1 et in2.
En sortie, cette opération retourne un élément MyOperationResponse comportant trois strings out1, out2 et out3, ainsi qu'un élément MyType out4.
Un élément MyType comporte deux strings str1 et str2.
Voici le contrat WSDL du service MyService :
J'ai tout d'abord testé ce service avec un client en Java (toujours avec Axis2 1.4.1 et XMLBeans) : aucun problème.
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
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 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/MyService/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="MyService" targetNamespace="http://www.example.org/MyService/"> <wsdl:types> <xsd:schema targetNamespace="http://www.example.org/MyService/"> <xsd:complexType name="MyType"> <xsd:sequence> <xsd:element name="str1" type="xsd:string" /> <xsd:element name="str2" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <xsd:element name="MyOperation"> <xsd:complexType> <xsd:sequence> <xsd:element name="in1" type="xsd:string" /> <xsd:element name="in2" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="MyOperationResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out1" type="xsd:string" /> <xsd:element name="out2" type="xsd:string" /> <xsd:element name="out3" type="xsd:string" /> <xsd:element name="out4" type="tns:MyType" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="MyOperationRequest"> <wsdl:part element="tns:MyOperation" name="parameters" /> </wsdl:message> <wsdl:message name="MyOperationResponse"> <wsdl:part element="tns:MyOperationResponse" name="parameters" /> </wsdl:message> <wsdl:portType name="MyService"> <wsdl:operation name="MyOperation"> <wsdl:input message="tns:MyOperationRequest" /> <wsdl:output message="tns:MyOperationResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="MyServiceSOAP" type="tns:MyService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="MyOperation"> <soap:operation soapAction="http://www.example.org/MyService/MyOperation" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="MyService"> <wsdl:port binding="tns:MyServiceSOAP" name="MyServiceSOAP"> <soap:address location="http://www.example.org/" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
Mon objectif est de consommer ce service avec un client en C#.
Pour cela, j'ai ajouté une référence Web dans un projet .NET (avec Visual Studio 2003).
Mais lorsque je veux invoquer l'opération MyOperation, Visual Studio me propose bien de renseigner les paramètres d'entrée in1 et in2, mais en ce qui concerne les paramètres de sortie, je ne peux récupérer que out2, out3 et out4, mais pas out1 qui est tout simplement absent de la signature de l'opération MyOperation dans le stub client qui a été généré...
Pourquoi le stub client généré par Visual Studio ne respecte-t-il pas la signature de l'opération telle que je l'ai définie dans le contrat WSDL du service MyService ?
Comment puis-je résoudre ce problème ?
Merci à vous.
Partager