Einzelnen Beitrag anzeigen

Benutzerbild von Samashy
Samashy

Registriert seit: 20. Feb 2004
Ort: Cottbus
127 Beiträge
 
Delphi 10.4 Sydney
 
#1

Webservice Header um Adressing erweitern

  Alt 18. Mai 2017, 16:29
Hallo,

kann mir bitte jemand helfen, meinen HEADER um 3 Parameter nach "xmlns:wsa="http://www.w3.org/2005/08/addressing" zu weitern?
Ich habe mir die Klassen in eine pas importiert:
Code:
{*******************************************************************}
{                                                                   }
{                         XML-Datenbindung                         }
{                                                                   }
{         Generiert am: 18.05.2017 17:16:38                         }
{       Generiert von:             }
{   Einstellungen gespeichert in:  }
{                                                                   }
{*******************************************************************}

unit wsaddr;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward-Deklarationen }

  IXMLEndpointReferenceType = interface;
  IXMLAttributedURIType = interface;
  IXMLReferenceParametersType = interface;
  IXMLMetadataType = interface;
  IXMLRelatesToType = interface;
  IXMLAttributedUnsignedLongType = interface;
  IXMLAttributedQNameType = interface;
  IXMLProblemActionType = interface;

{ IXMLEndpointReferenceType }

  IXMLEndpointReferenceType = interface(IXMLNode)
    ['{BC2F147F-BFD6-414F-B5A7-081DE44ED30B}']
    { Eigenschaftszugriff }
    function Get_Address: IXMLAttributedURIType;
    function Get_ReferenceParameters: IXMLReferenceParametersType;
    function Get_Metadata: IXMLMetadataType;
    { Methoden & Eigenschaften }
    property Address: IXMLAttributedURIType read Get_Address;
    property ReferenceParameters: IXMLReferenceParametersType read Get_ReferenceParameters;
    property Metadata: IXMLMetadataType read Get_Metadata;
  end;

{ IXMLAttributedURIType }

  IXMLAttributedURIType = interface(IXMLNode)
    ['{546A1D9B-B4A7-4632-9F72-7E0CF6106874}']
  end;

{ IXMLReferenceParametersType }

  IXMLReferenceParametersType = interface(IXMLNode)
    ['{5541DC24-5900-4A19-90B2-B2EE59F330A4}']
  end;

{ IXMLMetadataType }

  IXMLMetadataType = interface(IXMLNode)
    ['{A3C6C82B-6CC1-42AE-A5F6-C5D48ADDA277}']
  end;

{ IXMLRelatesToType }

  IXMLRelatesToType = interface(IXMLNode)
    ['{5B8401A4-1B6E-4277-85F8-AADD8BFCBF3A}']
    { Eigenschaftszugriff }
    function Get_RelationshipType: UnicodeString;
    procedure Set_RelationshipType(Value: UnicodeString);
    { Methoden & Eigenschaften }
    property RelationshipType: UnicodeString read Get_RelationshipType write Set_RelationshipType;
  end;

{ IXMLAttributedUnsignedLongType }

  IXMLAttributedUnsignedLongType = interface(IXMLNode)
    ['{6558D2BF-F55B-4E18-A60C-C6308F9615E2}']
  end;

{ IXMLAttributedQNameType }

  IXMLAttributedQNameType = interface(IXMLNode)
    ['{56FBD882-6A08-41F0-ADCB-92CDE4ABA6BE}']
  end;

{ IXMLProblemActionType }

  IXMLProblemActionType = interface(IXMLNode)
    ['{BD5CB672-A8FE-4F70-B4DE-1CD543D1BE2B}']
    { Eigenschaftszugriff }
    function Get_Action: IXMLAttributedURIType;
    function Get_SoapAction: UnicodeString;
    procedure Set_SoapAction(Value: UnicodeString);
    { Methoden & Eigenschaften }
    property Action: IXMLAttributedURIType read Get_Action;
    property SoapAction: UnicodeString read Get_SoapAction write Set_SoapAction;
  end;

{ Forward-Deklarationen }

  TXMLEndpointReferenceType = class;
  TXMLAttributedURIType = class;
  TXMLReferenceParametersType = class;
  TXMLMetadataType = class;
  TXMLRelatesToType = class;
  TXMLAttributedUnsignedLongType = class;
  TXMLAttributedQNameType = class;
  TXMLProblemActionType = class;

{ TXMLEndpointReferenceType }

  TXMLEndpointReferenceType = class(TXMLNode, IXMLEndpointReferenceType)
  protected
    { IXMLEndpointReferenceType }
    function Get_Address: IXMLAttributedURIType;
    function Get_ReferenceParameters: IXMLReferenceParametersType;
    function Get_Metadata: IXMLMetadataType;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLAttributedURIType }

  TXMLAttributedURIType = class(TXMLNode, IXMLAttributedURIType)
  protected
    { IXMLAttributedURIType }
  end;

{ TXMLReferenceParametersType }

  TXMLReferenceParametersType = class(TXMLNode, IXMLReferenceParametersType)
  protected
    { IXMLReferenceParametersType }
  end;

{ TXMLMetadataType }

  TXMLMetadataType = class(TXMLNode, IXMLMetadataType)
  protected
    { IXMLMetadataType }
  end;

{ TXMLRelatesToType }

  TXMLRelatesToType = class(TXMLNode, IXMLRelatesToType)
  protected
    { IXMLRelatesToType }
    function Get_RelationshipType: UnicodeString;
    procedure Set_RelationshipType(Value: UnicodeString);
  end;

{ TXMLAttributedUnsignedLongType }

  TXMLAttributedUnsignedLongType = class(TXMLNode, IXMLAttributedUnsignedLongType)
  protected
    { IXMLAttributedUnsignedLongType }
  end;

{ TXMLAttributedQNameType }

  TXMLAttributedQNameType = class(TXMLNode, IXMLAttributedQNameType)
  protected
    { IXMLAttributedQNameType }
  end;

{ TXMLProblemActionType }

  TXMLProblemActionType = class(TXMLNode, IXMLProblemActionType)
  protected
    { IXMLProblemActionType }
    function Get_Action: IXMLAttributedURIType;
    function Get_SoapAction: UnicodeString;
    procedure Set_SoapAction(Value: UnicodeString);
  public
    procedure AfterConstruction; override;
  end;

{ Globale Funktionen }

function GetEndpointReference(Doc: IXMLDocument): IXMLEndpointReferenceType;
function LoadEndpointReference(const FileName: string): IXMLEndpointReferenceType;
function NewEndpointReference: IXMLEndpointReferenceType;
function GetRelatesTo(Doc: IXMLDocument): IXMLRelatesToType;
function LoadRelatesTo(const FileName: string): IXMLRelatesToType;
function NewRelatesTo: IXMLRelatesToType;
function GetRetryAfter(Doc: IXMLDocument): IXMLAttributedUnsignedLongType;
function LoadRetryAfter(const FileName: string): IXMLAttributedUnsignedLongType;
function NewRetryAfter: IXMLAttributedUnsignedLongType;
function GetProblemHeaderQName(Doc: IXMLDocument): IXMLAttributedQNameType;
function LoadProblemHeaderQName(const FileName: string): IXMLAttributedQNameType;
function NewProblemHeaderQName: IXMLAttributedQNameType;
function GetProblemAction(Doc: IXMLDocument): IXMLProblemActionType;
function LoadProblemAction(const FileName: string): IXMLProblemActionType;
function NewProblemAction: IXMLProblemActionType;

const
  TargetNamespace = 'http://www.w3.org/2005/08/addressing';

implementation

{ Globale Funktionen }

function GetEndpointReference(Doc: IXMLDocument): IXMLEndpointReferenceType;
begin
  Result := Doc.GetDocBinding('EndpointReference', TXMLEndpointReferenceType, TargetNamespace) as IXMLEndpointReferenceType;
end;

function LoadEndpointReference(const FileName: string): IXMLEndpointReferenceType;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('EndpointReference', TXMLEndpointReferenceType, TargetNamespace) as IXMLEndpointReferenceType;
end;

function NewEndpointReference: IXMLEndpointReferenceType;
begin
  Result := NewXMLDocument.GetDocBinding('EndpointReference', TXMLEndpointReferenceType, TargetNamespace) as IXMLEndpointReferenceType;
end;
function GetRelatesTo(Doc: IXMLDocument): IXMLRelatesToType;
begin
  Result := Doc.GetDocBinding('RelatesTo', TXMLRelatesToType, TargetNamespace) as IXMLRelatesToType;
end;

function LoadRelatesTo(const FileName: string): IXMLRelatesToType;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('RelatesTo', TXMLRelatesToType, TargetNamespace) as IXMLRelatesToType;
end;

function NewRelatesTo: IXMLRelatesToType;
begin
  Result := NewXMLDocument.GetDocBinding('RelatesTo', TXMLRelatesToType, TargetNamespace) as IXMLRelatesToType;
end;
function GetRetryAfter(Doc: IXMLDocument): IXMLAttributedUnsignedLongType;
begin
  Result := Doc.GetDocBinding('RetryAfter', TXMLAttributedUnsignedLongType, TargetNamespace) as IXMLAttributedUnsignedLongType;
end;

function LoadRetryAfter(const FileName: string): IXMLAttributedUnsignedLongType;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('RetryAfter', TXMLAttributedUnsignedLongType, TargetNamespace) as IXMLAttributedUnsignedLongType;
end;

function NewRetryAfter: IXMLAttributedUnsignedLongType;
begin
  Result := NewXMLDocument.GetDocBinding('RetryAfter', TXMLAttributedUnsignedLongType, TargetNamespace) as IXMLAttributedUnsignedLongType;
end;
function GetProblemHeaderQName(Doc: IXMLDocument): IXMLAttributedQNameType;
begin
  Result := Doc.GetDocBinding('ProblemHeaderQName', TXMLAttributedQNameType, TargetNamespace) as IXMLAttributedQNameType;
end;

function LoadProblemHeaderQName(const FileName: string): IXMLAttributedQNameType;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('ProblemHeaderQName', TXMLAttributedQNameType, TargetNamespace) as IXMLAttributedQNameType;
end;

function NewProblemHeaderQName: IXMLAttributedQNameType;
begin
  Result := NewXMLDocument.GetDocBinding('ProblemHeaderQName', TXMLAttributedQNameType, TargetNamespace) as IXMLAttributedQNameType;
end;
function GetProblemAction(Doc: IXMLDocument): IXMLProblemActionType;
begin
  Result := Doc.GetDocBinding('ProblemAction', TXMLProblemActionType, TargetNamespace) as IXMLProblemActionType;
end;

function LoadProblemAction(const FileName: string): IXMLProblemActionType;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('ProblemAction', TXMLProblemActionType, TargetNamespace) as IXMLProblemActionType;
end;

function NewProblemAction: IXMLProblemActionType;
begin
  Result := NewXMLDocument.GetDocBinding('ProblemAction', TXMLProblemActionType, TargetNamespace) as IXMLProblemActionType;
end;

{ TXMLEndpointReferenceType }

procedure TXMLEndpointReferenceType.AfterConstruction;
begin
  RegisterChildNode('Address', TXMLAttributedURIType);
  RegisterChildNode('ReferenceParameters', TXMLReferenceParametersType);
  RegisterChildNode('Metadata', TXMLMetadataType);
  inherited;
end;

function TXMLEndpointReferenceType.Get_Address: IXMLAttributedURIType;
begin
  Result := ChildNodes['Address'] as IXMLAttributedURIType;
end;

function TXMLEndpointReferenceType.Get_ReferenceParameters: IXMLReferenceParametersType;
begin
  Result := ChildNodes['ReferenceParameters'] as IXMLReferenceParametersType;
end;

function TXMLEndpointReferenceType.Get_Metadata: IXMLMetadataType;
begin
  Result := ChildNodes['Metadata'] as IXMLMetadataType;
end;

{ TXMLAttributedURIType }

{ TXMLReferenceParametersType }

{ TXMLMetadataType }

{ TXMLRelatesToType }

function TXMLRelatesToType.Get_RelationshipType: UnicodeString;
begin
  Result := AttributeNodes['RelationshipType'].Text;
end;

procedure TXMLRelatesToType.Set_RelationshipType(Value: UnicodeString);
begin
  SetAttribute('RelationshipType', Value);
end;

{ TXMLAttributedUnsignedLongType }

{ TXMLAttributedQNameType }

{ TXMLProblemActionType }

procedure TXMLProblemActionType.AfterConstruction;
begin
  RegisterChildNode('Action', TXMLAttributedURIType);
  inherited;
end;

function TXMLProblemActionType.Get_Action: IXMLAttributedURIType;
begin
  Result := ChildNodes['Action'] as IXMLAttributedURIType;
end;

function TXMLProblemActionType.Get_SoapAction: UnicodeString;
begin
  Result := ChildNodes['SoapAction'].Text;
end;

procedure TXMLProblemActionType.Set_SoapAction(Value: UnicodeString);
begin
  ChildNodes['SoapAction'].NodeValue := Value;
end;

end.
Ich brauche als Typ "AttributedURIType" "MessageID", "To" und "Action" in solcher Form:
Code:
<wsa:To>http://localhost:...</wsa:To>
    <wsa:MessageID>urn:uuid:3D3F...</wsa:MessageID>
    <wsa:Action>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT</wsa:Action>
und das alles in den HEADER.
Wie kann ich meinem Header diese Knoten hinzufügen?

Lieben Gruß,
Samashy
  Mit Zitat antworten Zitat