Neuer Tag neues Glück
Ich hab es mittlerweile hin bekommen den
SOAP-HEADER zu erweitern. Ich mache es mit dem ObjectToSOAP Event eines TsoapHeader Objekts und CASTE mein Webservice als ISOAPHeader sieht dann so aus:
Delphi-Quellcode:
type
TUUID = class(TSoapHeader)
private
FUUID: string;
public
function ObjectToSOAP(RootNode, ParentNode: IXMLNode; const ObjConverter: IObjConverter;
const NodeName, NodeNamespace, ChildNamespace: InvString; ObjConvOpts: TObjectConvertOptions;
out RefID: InvString): IXMLNode; override;
published
property UUID: string read FUUID write FUUID;
end;
....
function TUUID.ObjectToSOAP(RootNode, ParentNode: IXMLNode; const ObjConverter: IObjConverter;
const NodeName, NodeNamespace, ChildNamespace: InvString; ObjConvOpts: TObjectConvertOptions; out RefID: InvString)
: IXMLNode;
begin
Result := ParentNode.AddChild('UUID');
Result.Text := UUID;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
WebServiceKostenstelle: wsKostenstelleObj;
lHeader : TSOAPHeader;
lUUID : TUUID;
begin
WebServiceKostenstelle := GetwsKostenstelleObj(true, '', HTTPRIO1);
lUUID:= TUUID.Create;
lUUID.UUID:='DEMO-UUID';
(WebServiceKostenstelle as ISOAPHeaders).send(luuid);
WebServiceKostenstelle.Connect_wsKostenstelle('', '', '');
end;
Leider bekomme ich die Anfrage nicht passend hin...
erwartet wird folgendes:
Code:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/
soap/envelope/" xmlns:kos="virrpcKostenstelle/kostenstelle">
<soapenv:Header>
<kostenstelleID xsi:type="kos:kostenstelleID">
<UUID xsi:type="xsd:string">05a7df56e81ee20b:7328b961:1406ccf6a97:-7fff;<virrpcKostenstelle|PX-279394|PO>;tliStYV2ghJRLlJRXflTXg==</UUID>
</kostenstelleID>
</soapenv:Header>
Meine Anfrage erzeugt aber das:
Code:
<
SOAP-ENV:Envelope xmlns:
SOAP-ENV="http://schemas.xmlsoap.org/
soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:
SOAP-ENC="http://schemas.xmlsoap.org/
soap/encoding/"><
SOAP-ENV:Header
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/
soap/encoding/"><
SOAP-ENV:UUID>DEMO-UUID</
SOAP-ENV:UUID></
SOAP-ENV:Header>
Wer langsam wahnsinnig und kenn mich leider auch nicht all zu gut mit
XML aus
jemand eine Idee?
Gruß
PJM