@Bbommel
Da hast du Recht. Wäre aber kein Problem da alles eh nur auf 1 Installation und nur inhouse läuft.
@gubbe
Das war eine super Idee!
Ich setze die Parameter nun wie folgt:
Code:
if PdfFile<>'' then begin
RESTParam:= FRESTRequest.Params.AddItem;
RESTParam.Name:= 'files[0]';
RESTParam.Value:= ExtractFileName(PdfFile);
RESTParam.SetStream(TFileStream.Create(PdfFile, fmOpenRead), TRESTObjectOwnership.ooREST);
RESTParam.Kind:= TRESTRequestParameterKind.pkFILE;
RESTParam.Options:= [TRESTRequestParameterOption.poDoNotEncode];
RESTParam.ContentType:= GetMIMETypeFromFile(PdfFile);
end;
if XmlFile<>'' then begin
RESTParam:= FRESTRequest.Params.AddItem;
RESTParam.Name:= 'files[1]';
RESTParam.Value:= ExtractFileName(XmlFile);
RESTParam.SetStream(TFileStream.Create(XmlFile, fmOpenRead), TRESTObjectOwnership.ooREST);
RESTParam.Kind:= TRESTRequestParameterKind.pkFILE;
RESTParam.Options:= [TRESTRequestParameterOption.poDoNotEncode];
RESTParam.ContentType:= GetMIMETypeFromFile(XmlFile);
end;
...und überschreibe die Funktion wie folgt...
Code:
procedure TMyAPi.TMyRESTRequest.DoPrepareRequestBody(
AParamList: TRESTRequestParameterArray; AContentType: TRESTContentType;
var ABodyStream: TStream; var ABodyStreamOwner: Boolean);
var P: TRESTRequestParameter;
begin
for P in AParamList do
if StartsText('files[', P.Name) then
P.Name:= 'files';
inherited;
end;
Die
API akzeptiert und Postman zeigt als Content-Length ca. die Summe beider Dateien!
Bleibt zu hoffen dass der Anbieter das auch so sieht.