Einzelnen Beitrag anzeigen

Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
243 Beiträge
 
Delphi 12 Athens
 
#16

AW: REST Umsetzung eines CURL Befehls nach Delphi

  Alt 28. Nov 2024, 10:15
@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.
  Mit Zitat antworten Zitat