Einzelnen Beitrag anzeigen

Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 15. Jun 2011, 21:24
Hallo,

ich rufe den Webservice immer anders auf, kann Dir aber nicht sagen, was dort der Unterschied ist.

Delphi-Quellcode:
Var Webservice:web_getInventory;
    Erg:MessageOut;
begin
  Webservice:=Getweb_getInventory(false,'',HTTPRIO1);

  rein:=...
  
  erg:=Webservice.getInventory(rein);
                   
end;
Httprio1: ist eine HTTPRio-Kompo, die du mit auf die Form ziehst. Die braucht Du im Normalfall gar nicht. Aber wenn Du Dir anschauen willst, was da übertragen wird und wieder zurückkommt, fülle noch OnBeforeExecute und OnAfterExecute:

Delphi-Quellcode:
procedure TForm2.HTTPRIO1AfterExecute(const MethodName: string;
  SOAPResponse: TStream);
Var sl:Tstrings;
begin
  sl:=TStringList.Create;
  try
    SOAPResponse.Position:=0;
    sl.LoadFromStream(SOAPResponse);

    sl.SaveToFile(irgendwohin+'SoapResponse-Test.xml');
  finally
    sl.free;
  end;
end;

procedure TForm2.HTTPRIO1BeforeExecute(const MethodName: string;
  var SOAPRequest: WideString);
Var sl:Tstrings;
begin
  sl:=TStringList.Create;
  try
    sl.Text:=SOAPRequest;

    sl.SaveToFile(irgendwohin+'Soaprequest-Test.xml');
  finally
    sl.free;
  end;
end;
bist Du dir sicher, daß das funktionieren kann:
Delphi-Quellcode:
  myArray : array[0..1] of ItemType;

...

  myItemType := ItemType.Create;
  myItemType.Article := '10000100';
  myItemType.Quantity := 1;

  myArray[0] := myItemType;
Du hast ja damit ein Array mit 2 Feldern, belegst und erstellst aber nur das erste.
Für mich wäre logischer, wenn du das als dynamisches Aray deklarierst

Delphi-Quellcode:
Var
  myArray : Array_Of_ItemType; -> Array_Of_ItemType siehe die Wsdl

...
  setlength(myArray,1);
  rein.item:= myArray;

  myItemType := ItemType.Create;
  myItemType.Article := '10000100';
  myItemType.Quantity := 1;

  rein.item[0]:=myItemType;
Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat