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:
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;
Ist sehr stark gekürzt. Aber es geht auch nur um das ArrayOfDocumentReference.
ArrayOfDocumentReference ist so definiert:
ArrayOfDocumentReference = array of ArrayOfDocumentReferenceItem;
Und ArrayOfDocumentReferenceItem so ...
Delphi-Quellcode:
// ************************************************************************ //
// XML : ArrayOfDocumentReferenceItem, alias
// ************************************************************************ //
ArrayOfDocumentReferenceItem =
class(DocumentReference)
private
published
end;
Ok, wenn ich jetzt in meinem Code alles zusammenbaue muss ich irgendwann auch DocumentReference füllen.
das mache ich so:
Delphi-Quellcode:
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;
Das fonktioniert auch. Aber wenn ich mir dann die Rohdaten in der
SOAP Message ansehe, dann kommt da das bei rum:
XML-Code:
<DocumentReference>
<item>
<ReferenceType>xyz</ReferenceType>
<ReferenceValue>xyz-000001</ReferenceValue>
</item>
<item>
<ReferenceType>xyz</ReferenceType>
<ReferenceValue>xyz-000001</ReferenceValue>
</item>
</DocumentReference>
Und ich frage mich nun warum da <item> steht und nicht <ArrayOfDocumentReferenceItem>.
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.