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.