Hallo allerseits,
ich versuche mit TurboDelphi Pro (VCL32) auf einen Java- oder .net-Webservice zuzugreifen. Die
WSDL-Datei habe ich importiert; allerdings treten genau da wahrscheinlich die Probleme auf.
Die
WSDL-Datei enthält Abschnitte, die in etwa so aufgebaut sind:
Delphi-Quellcode:
<s:element name="SubmitXml">
<s:complexType>
<s:sequence>
<s:element maxOccurs="1" minOccurs="0" name="Profile" type="s:string"/>
<s:element maxOccurs="1" minOccurs="0" name="Request">
<s:complexType>
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
(usw...)
Probleme macht dabei das "<s:any/>" für das Element "Request". Der
WSDL-Importer generiert daraus zu recht die TRemotable-Klasse
Delphi-Quellcode:
Request = class(TRemotable)
private
published
end;
Daraus kann ich nicht ableiten, welchen Datentyp ich an den Webservice schicken muss. Da es sich um ein
XML-String handelt, habe ich schon mal versucht, den Parameter "Request" als einen WideString an die Methode zu übergeben (mit entsprechend angepaßter
WSDL), bekam dann aber nur die
Exception vom Server um die Ohren gehauen, dass (sinngemäß) "ein notwendiger Parameter der Methode SubmitXML null" sei ("Required parameters for Method SubmitXml are null.").
Der Hersteller liefert Demos in C# bzw VB.NET mit; darin wird die SubmitXml aufgerufen mit
xws.SubmitXml(profile, xmlRequest.DocumentElement,...)
wobei xmlRequest eine Instanz von XmlDocument ist. Jetzt weiß ich allerdings nicht weiter. Kann ich das notwendige Datenformat aus den Angaben ableiten (wenn das überhaupt möglich ist)? Sonst muss ich mal beim Hersteller nachfragen, was da konkret erwartet wird - aber da ist sicherlich niemand, der Delphi spricht...
Greetings
Udo