Problem mit SOAP und Klassen
Hallo zusammen,
ich habe einen WebService gebastelt, welcher Methoden enthält, die eine Klasse als Parameter erhalten, wie beispielsweise
Code:
Die Klassendeklaration von THFS_elem sieht so aus:
function UploadFile (HFS_File : THFS_fselem; Dir : String) : String; stdcall;
Code:
Die WSDL exportiert allerdings nur die Property. Alle Methode, Konstruktoren, etc werden nicht abgebildet.
...
type THFS_fselem = class(TRemotable) private _filename : String; _localdir : String; _size : Int64; _filedata : TMemoryStream; published Constructor Create; Destructor Destroy; override; property LocalDir : String read _localdir; procedure LoadFromFile (FileURL : String); procedure SaveToDir (FileDIR : String); end; Dürfen TRemotable Klassen keine Methoden verwenden? Gruß Helen |
Re: Problem mit SOAP und Klassen
Hallo,
ich bin nicht 100% fit in WebServices, aber ich glaube WSDL kennt keine Klassen im eigentlichen Sinne. Das heißt also auch keine Methoden usw. der zu übertragenen Klassen. Ich hatte mal ein prinzipiell ähnliches Problem. Also ich wollte komplexe Klassen, komplexer als Beans, übertragen. Hab das dann so gelöst, dass ich nur "Datenträger-Klassen" mit setter/getter-Methoden übertragen hab und sowohl client- als auch serverseitig andere Klassen hatte die die komplexen Funktionen übernommen haben. Weiß aber nicht, ob das so wirklich sauber ist. Eric. |
Re: Problem mit SOAP und Klassen
Hallo,
so würde es gehen:
Delphi-Quellcode:
{ Invokable-Interface IFileLoader }
... THFS_fselem = class(TRemotable) ... published function ExistsFile(const FileURL : WideString): Boolean; ... end; IFileLoader = interface(IInvokable) ['{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'] ... function ExistsFile(const FileURL : WideString): Boolean; stdcall; end;
Delphi-Quellcode:
Gruß
{ Invokable-Implementierungsdatei für TFileLoader das IFileLoader implementiert }
type { TFileLoader } TFileLoader = class(TInvokableClass, IFileLoader) public function ExistsFile(const FileURL : WideString): Boolean; stdcall; end; implementation function TFileLoader.ExistsFile(const FileURL : WideString): Boolean; stdcall; var HFS_fselem : THFS_fselem; begin HFS_fselem := THFS_fselem.Create; try Result := HFS_fselem.ExistsFile(FileURL); finally HFS_fselem.Free; end; end; Alter Mann |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz