Hallo zusammen,
Ich bastele an einem
SOAP-Client (MyDHLAPI von DHL Express).
Beim Aufruf der aus der wdsl importieren Function getRateRequest erhalte ich diesen Fehler:
Zitat:
Ein
XML-Dokument muss ein Element der obersten Ebene enthalten.
Zeile: 0
Mein Code sieht so aus:
Delphi-Quellcode:
procedure TDHLExpress.DoRateRequest;
var Request:RateRequest; // aus der wdsl
Response:RateResponse; // aus der wdsl
DHLExpressService:gblExpressRateBook; // aus der wdsl
DhlExpressHeader:TDHLExpressSoapHeader;
RIO : THTTPRIO;
begin
RIO := THTTPRIO.Create(nil);
RIO.OnAfterExecute :=HTTPRIOAfterExecute;
RIO.OnBeforeExecute:=HTTPRIOBeforeExecute;
DHLExpressService:=GetgblExpressRateBook(false, '', RIO);
DhlExpressHeader :=TDHLExpressSoapHeader.Create; // Für Authentication
DHLExpressHeader.User:=fUser;
DHLExpressHeader.Signature:=fSignature;
Request:=RateRequestCreate; // Hier wird der Request zusammengebaut
try
(DHLExpressService as ISOAPHeaders).Send(DHLExpressHeader);
Response:=DHLExpressService.getRateRequest(Request); // Hier kommt der Fehler
finally
Request.Free;
DhlExpressHeader.Free;
end;
end;
In HTTPRIOBeforeExecute und HTTPRIOAfterExecute cheche ich, was in SOAPRequest bzw. in SOAPResponse drin steht. SOAPRequest ist in Ordnung, SOAPResponse ist leer.
In einem ähnlichen Fall mit einer anderen
API von DHL (nicht Express) funktioniert alles nach diesem Schema bestens.
Was könnte da passiert sein?