Bonjour,
Deux problèmes en un avec un webservice...
Je suis sur Windows XP SP2 avec Delphi 6 Enterprise, version Française, et j'ai importé un WSDL pour invoquer un webservice. Le serveur, lui, est un MockService sous SOAPUI.
Mon problème est le suivant : quand j'invoque le webservice, je ne vois rien arriver côté serveur mais j'ai une belle erreur remonté par mon client Delphi :
Konvertierung der Klasse TButton in SOAP wird nicht unterstützt
Le message est en Allemand (1ère erreur) et il ne veut rien dire (2ème erreur). En Français, ça dit grosso modo "La conversion de la classe TButton dans SOAP n'est pas gérée".
Q1 : avez-vous la moindre idée de la raison pour laquelle le message d'erreur est en Allemand ? Je précise que toutes mes options régionales sont sur "Français".
Q2 : savez-vous ce que signifie réellement ce message d'erreur sachant qu'en dehors du bouton sur le quel je clique, à aucun moment je ne fais référence à un TButton ?
D'avance, merci de votre aide.
Ci-dessous, le webservice:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 // ************************************************************************ // // Les types déclaré dans ce fichier ont été générés à partir de données lues dans le fichier // WSDL décrit ci-dessous : // WSDL : C:\Documents and Settings\ade6399\Bureau\Hello.wsdl // Encodage : UTF-8 // Version : 1.0 // (29/06/2009 10:20:37 - $Revision: 1.9.1.0.1.0.1.9 $) // ************************************************************************ // unit Hello; interface uses InvokeRegistry, Types, XSBuiltIns; type // ************************************************************************ // // Les types suivants mentionnés dans le document WSDL ne sont pas représentés // dans ce fichier. Ce sont soit des alias[@] de types représentés ou alors ils sont // référencés mais jamais[!] déclarés dans ce document. Les types de la dernière catégorie // sont en principe mappés à des types Borland ou XML prédéfinis/connus. Toutefois, ils peuvent aussi // signaler des documents WSDL incorrects n'ayant pas réussi à déclarer ou importer un type de schéma. // ************************************************************************ // // !:string - "http://schemas.xmlsoap.org/soap/encoding/" HelloParametre = class; { "http://parametre.metier.hello.cristal.disf.laposte.fr" } HelloDataBean = class; { "http://donnees.modele.hello.cristal.disf.laposte.fr" } // ************************************************************************ // // Espace de nommage : http://parametre.metier.hello.cristal.disf.laposte.fr // ************************************************************************ // HelloParametre = class(TRemotable) private Fparametre: String; published property parametre: String read Fparametre write Fparametre; end; // ************************************************************************ // // Espace de nommage : http://donnees.modele.hello.cristal.disf.laposte.fr // ************************************************************************ // HelloDataBean = class(TRemotable) private Fmsg: String; published property msg: String read Fmsg write Fmsg; end; // ************************************************************************ // // Espace de nommage : urn:helloservice // transport : http://schemas.xmlsoap.org/soap/http // style : rpc // liaison : HelloSoapBinding // service : HelloServiceService // port : Hello // URL : http://localhost:9080/BQ_/services/Hello // ************************************************************************ // HelloService = interface(IInvokable) ['{A3CCE649-1F8D-E32D-38B4-7AAE57E0A4AE}'] function sayHello(const in0: HelloParametre): HelloDataBean; stdcall; end; function GetHelloService(UseWSDL: Boolean=System.False; Addr: string=''): HelloService; implementation uses SOAPHTTPClient; function GetHelloService(UseWSDL: Boolean; Addr: string): HelloService; const defWSDL = 'C:\Documents and Settings\ade6399\Bureau\Hello.wsdl'; defURL = 'http://127.0.0.1:8088/mockHelloLBPSoapBinding'; defSvc = 'HelloServiceService'; defPrt = 'Hello'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; RIO := THTTPRIO.Create(nil); try if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; Result := (RIO as HelloService); finally if Result = nil then RIO.Free; end; end; initialization InvRegistry.RegisterInterface(TypeInfo(HelloService), 'urn:helloservice', 'UTF-8'); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(HelloService), ''); RemClassRegistry.RegisterXSClass(HelloParametre, 'http://parametre.metier.hello.cristal.disf.laposte.fr', 'HelloParametre'); RemClassRegistry.RegisterXSClass(HelloDataBean, 'http://donnees.modele.hello.cristal.disf.laposte.fr', 'HelloDataBean'); end.
Partager