Benutze Supports um das Interface auf den richtigen Typ zu casten. Das funktioniert bei uns problemlos, wir machen etwas ähnliches.
// EDIT:
THTTPRIO implementiert doch IInvokable gar nicht.
Delphi generiert sowas für webservices
Delphi-Quellcode:
function GetWSClient(UseWSDL: Boolean; Addr:
string; HTTPRIO: THTTPRIO): IWSClient;
const
defWSDL = '
C:\IWSClient.xml';
defURL = '
http://localhost:80/soap/IWSClient';
defSvc = '
IWSClient';
defPrt = '
IWSClient_Port';
var
RIO: THTTPRIO;
begin
Result :=
nil;
if (Addr = '
')
then
begin
if UseWSDL
then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO =
nil then
RIO := THTTPRIO.Create(
nil)
else
RIO := HTTPRIO;
try
Result := (RIO
as IWSClient);
if UseWSDL
then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result =
nil)
and (HTTPRIO =
nil)
then
RIO.Free;
end;
end;
Ich habe nur alles entfernt was ich nicht brauche und das interface durch <T> ersetzt
die Interfaces aus der generierten datei sind von IInvokable abgeleitet ...allerdings scheint das auch nur ein Alias für IInterface zu sein....
Ich versuche es mal mit supports und gebe feedback.