Einzelnen Beitrag anzeigen

Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
91 Beiträge
 
Delphi 12 Athens
 
#1

REST-API: Upload einer zweier Dateien klappt nicht

  Alt 8. Apr 2020, 18:09
Ich sammle gerade Erfahrungen beim Benutzen einer Rest-API

Delphi 10.3.3 VCL-Anwendung mit TRestClient, TRestRequest und TRestResponse Komponenten

Einige einfache Get-Request klappen auch wie gewünscht.

Was im Moment nicht klappt ist ein Post-Request bei dem u.a. zwei Dateien hochgeladen werden sollen (eine Pdf und eine Json-Datei).
Beim Testen mit „Postman“ klappt der Reguest. Meine Delphilösung ergibt einen Serverfehler (HTTP/1.1 500). Der Admin beim API-Anbieter teilte mir mit, dass die beiden Dateien nicht angekommen sind.

Meine Delphi-Lösung sieht zurzeit so aus:

Code:
RESTClient.ContentType:= 'application/x-www-form-urlencoded';
RESTClient.BaseURL:= 'https://xxxx';
RESTRequest.Accept:= '*/*';
RESTRequest.Method:= rmPOST;
RESTRequest.Body.ClearBody;
RESTRequest.Resource:= '';
RESTRequest.ResourceSuffix:= xxxx';
RESTRequest.AddFile('file', /C:/Temp/Test_31_08_2001.pdf');
RESTRequest.AddFile('file', /C:/Temp/Test_31_08_2001.json');
RESTRequest.Execute;
Der Postman-Request als C#-Code:

Code:
var client = new RestClient("https://xxxx");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddFile("file", "/C:/Temp/Test_31_08_2001.pdf ");
request.AddFile("file", "/C:/Temp/Test_31_08_2001.json");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Ich vermute, dass in der Delphi-Lösung „RESTRequest.AddFile“ allein keinen Upload bewirkt.
Die Emba-Hilfe zu "AddFile" sagt nur aus "Fügt der Anforderung Dateiinhalt hinzu" und dass die Methode überladen ist.
Ulrich Blomeyer
  Mit Zitat antworten Zitat