Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Problem bei XML/SOAP Abfrage (https://www.delphipraxis.net/94059-problem-bei-xml-soap-abfrage.html)

wieder ein Klaus 15. Jun 2007 11:36


Problem bei XML/SOAP Abfrage
 
Hallo zusammen,

folgender Aufruf führt zu einer Exception (Zugriffsverletzung)

procedure TForm1.GCTClick(Sender: TObject);
var request : TXmlGCT;
response : TXMLGCTResponse;
begin
p_CS:= GetCSPortType(false); // Diesr Aufruf klappt
if Assigned(p_CS) then
response:= p_CS.GCT(request); // Hier tritt der Fehler auf
end;
end;


Ich werde von Delphi gewarnt, dass REQUEST nicht initialisiert ist.
Ich weiß nur nicht, wie ich die Initialisierung vornehmen soll.

Die Delphi Hilfe erwartet etwas in dieser Form:
response:= TXMLGCT.create(IDomNode,TXmlNode,TXmlDocument);

Die Klassen und Funktionen sind via WSDL-Import und XSD-Import generiert worden.
(kann ich bei Bedarf auch posten)

Kann mir jemand helfen?
Ich bin für jeden Tipp dankbar.

Klaus

mkinzler 15. Jun 2007 11:38

Re: Problem bei XML/SOAP Abfrage
 
Ist p_CS intantiiert?

wieder ein Klaus 15. Jun 2007 13:52

Re: Problem bei XML/SOAP Abfrage
 
Zitat:

Zitat von mkinzler
Ist p_CS intantiiert?

Sorry,
habe ich vergessen. P_SC ist global deklariert.

p_CS : CSPortType;

Des weiteren wurde beim WSDL-Import erzeugt:
Type GCT = TXMLGCT;

CSPortType = interface(IInvokable)
['{63B1C593-F454-74AF-4DF0-32ED9BBFD746}']
function GCT(const parameter: GCT): GCTResponse; stdcall;
end;


function GetCSPortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): CSPortType;

implementation
[...]


Gruß
Klaus

Keldorn 15. Jun 2007 18:43

Re: Problem bei XML/SOAP Abfrage
 
Hallo

was genau ist TXmlGCT?
wenn es nicht nur ein record ist, mußt du es auch erzeugen.
Delphi-Quellcode:
request:=TXmlGCT.create;
request.blabla:='dingsda';
...
response:= p_CS.GCT(request); // Hier tritt der Fehler auf
Deine Bemerkung zur Delphi-Hilfe verstehe ich nicht, bzw wie sieht die wsdl aus?

Mfg Frank

wieder ein Klaus 15. Jun 2007 19:30

Re: Problem bei XML/SOAP Abfrage
 
Zitat:

Zitat von Keldorn
Hallo

was genau ist TXmlGCT?
wenn es nicht nur ein record ist, mußt du es auch erzeugen.
Delphi-Quellcode:
request:=TXmlGCT.create;
request.blabla:='dingsda';
...
response:= p_CS.GCT(request); // Hier tritt der Fehler auf
Deine Bemerkung zur Delphi-Hilfe verstehe ich nicht, bzw wie sieht die wsdl aus?

Mfg Frank

Hallo Frank,

Mit der Delphihilfe meine ich die Eingabehilfe bei der Codeerstellung.
TXmlGCT ist durch die automatische XLS-Datenbindung von Delphi erzeugt worden.
Hier nur der auf das relevate reduzierte Code:

Delphi-Quellcode:
{                           XML-Datenbindung                           }

unit CS;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward-Deklarationen }
  IXMLGCT = interface;

{ IXMLGCT }
  IXMLGCT = interface(IXMLNode)
    ['{801D71FE-7836-48D9-8256-E1E51E909F03}']
  end;

{ Forward-Deklarationen }
  TXMLGCT = class;

{ TXMLGCT }

  TXMLGCT = class(TXMLNode, IXMLGCT)
  protected
    { IXMLGCT }
  end;

implementation

{ TXMLGetCardTerminals }

// keine Funktionen
end.
Und hier noch mal der Code, der duch die zugehöhrige wsdl-Datei erzeugt wurde:

Delphi-Quellcode:
unit CSW;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns, CS;

type


Type GCT = TXMLGCT;

CSPortType = interface(IInvokable)
['{63B1C593-F454-74AF-4DF0-32ED9BBFD746}']
function GCT(const parameter: GCT): GCTResponse; stdcall;
end;


function GetCSPortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): CSPortType;

implementation
[...]
Gruss vom Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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