Einzelnen Beitrag anzeigen

fisipjm

Registriert seit: 28. Okt 2013
251 Beiträge
 
#4

AW: SOAP WSDL Import ohne Header - Tokyo 10.2

  Alt 2. Okt 2019, 13:42
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;&lt;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
  Mit Zitat antworten Zitat