![]() |
SOAP : Array items mit falschem Namen
Moin !
So jetzt habe ich aber dennoch ein Problem mit meinem Webservice. Ich muss für den Webservice Aufruf eine Struktur aufbauen. Und ein Teil dieser Struktur ist das hier:
Delphi-Quellcode:
Ist sehr stark gekürzt. Aber es geht auch nur um das ArrayOfDocumentReference.
ServiceRequestHeader = class(TRemotable)
private FDocumentReference: ArrayOfDocumentReference; FDocumentReference_Specified: boolean; procedure SetDocumentReference(Index: Integer; const AArrayOfDocumentReference: ArrayOfDocumentReference); function DocumentReference_Specified(Index: Integer): boolean; public destructor Destroy; override; published property DocumentReference: ArrayOfDocumentReference Index (IS_OPTN) read FDocumentReference write SetDocumentReference stored DocumentReference_Specified; end; ArrayOfDocumentReference ist so definiert:
Delphi-Quellcode:
Und ArrayOfDocumentReferenceItem so ...
ArrayOfDocumentReference = array of ArrayOfDocumentReferenceItem;
Delphi-Quellcode:
Ok, wenn ich jetzt in meinem Code alles zusammenbaue muss ich irgendwann auch DocumentReference füllen.
// ************************************************************************ //
// XML : ArrayOfDocumentReferenceItem, alias // ************************************************************************ // ArrayOfDocumentReferenceItem = class(DocumentReference) private published end; das mache ich so:
Delphi-Quellcode:
Das fonktioniert auch. Aber wenn ich mir dann die Rohdaten in der SOAP Message ansehe, dann kommt da das bei rum:
var _ArrayOfDocumentReference : ArrayOfDocumentReference;
... begin ... SetLength(_ArrayOfDocumentReference, 2); _ArrayOfDocumentReference[0] := ArrayOfDocumentReferenceItem.Create; _ArrayOfDocumentReference[0].ReferenceType := 'xyz'; _ArrayOfDocumentReference[0].ReferenceValue := 'xyz-000001'; _ArrayOfDocumentReference[1] := ArrayOfDocumentReferenceItem.Create; _ArrayOfDocumentReference[1].ReferenceType := 'xyz'; _ArrayOfDocumentReference[1].ReferenceValue := 'xyz-000001'; _SR.ServiceRequest.ServiceRequestHeader.DocumentReference := _ArrayOfDocumentReference;
XML-Code:
Und ich frage mich nun warum da <item> steht und nicht <ArrayOfDocumentReferenceItem>.
<DocumentReference>
<item> <ReferenceType>xyz</ReferenceType> <ReferenceValue>xyz-000001</ReferenceValue> </item> <item> <ReferenceType>xyz</ReferenceType> <ReferenceValue>xyz-000001</ReferenceValue> </item> </DocumentReference> Mache ich da was falsch beim Zusammensetzen und übergeben des Arrays? Ist das evtl. ein (bekannter) Delphi Bug? Falls ich irgendwas an wichtigen Infos vergessen habe, dann lasst es mich wissen. |
Re: SOAP : Array items mit falschem Namen
Ok ich habe schon rausgefunden das es in OPToSOAPDomConv.pas folgendes gibt:
Delphi-Quellcode:
Das bedeutet wohl das in der WSDL eine Definition fehlt !?
DefArrayElemName: string = 'item'; { do not lcoalize }
|
AW: SOAP : Array items mit falschem Namen
hast du ne lösung gefunden?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz