![]() |
REST-API: Upload einer zweier Dateien klappt nicht
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:
Der Postman-Request als C#-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;
Code:
Ich vermute, dass in der Delphi-Lösung „RESTRequest.AddFile“ allein keinen Upload bewirkt.
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); Die Emba-Hilfe zu "AddFile" sagt nur aus "Fügt der Anforderung Dateiinhalt hinzu" und dass die Methode überladen ist. |
AW: REST-API: Upload einer zweier Dateien klappt nicht
Es könnte vielleicht helfen, dem AddFile als dritten Parameter ein TRESTContentType.ctAPPLICATION_X_WWW_FORM_URLENCOD ED mitzugeben.
|
AW: REST-API: Upload einer zweier Dateien klappt nicht
Hallo Herr Raabe,
hilft leider nicht.
Code:
RESTRequest.AddFile('file','/C:/Temp/Test_31_08_2001.pdf',TRESTContentType.ctAPPLICATION_X_WWW_FORM_URLENCODED);
RESTRequest.AddFile('file','/C:/Temp/Test_31_08_2001.json',TRESTContentType.ctAPPLICATION_X_WWW_FORM_URLENCODED); |
AW: REST-API: Upload einer zweier Dateien klappt nicht
Kenne mich mit dem Thema nicht aus, aber ist die Schreibweise der Dateinamen so (unter Windows?) korrekt?
Mein Versuch wäre so:
Delphi-Quellcode:
und die Dateien (erstmal) ins Verzeichnis der Exe legen.
RESTRequest.AddFile('file','Test_31_08_2001.pdf',TRESTContentType.ctAPPLICATION_X_WWW_FORM_URLENCODED);
RESTRequest.AddFile('file','Test_31_08_2001.json',TRESTContentType.ctAPPLICATION_X_WWW_FORM_URLENCODED); Klappst dann, liegt das Problem in der Schreibweise der Dateinamen / Pfadangaben. Aber: Das ist jetzt nur mal so geraten. |
AW: REST-API: Upload einer zweier Dateien klappt nicht
Schluß mit Raten, bitte mit Telrik Fiddler den Post-Request von dir und von Postman vergleichen.
![]() |
AW: REST-API: Upload einer zweier Dateien klappt nicht
Zitat:
|
AW: REST-API: Upload einer zweier Dateien klappt nicht
Zitat:
Code:
Wenn der erste Parameter bei beiden AddFile-Aufrufen gleich ist ("file") wird nur die zweite Datei an den Server übertragen. Und da der Server zwei Dateien erwartet meckert er.
RESTRequest.AddFile('file','Test_31_08_2001.pdf',TRESTContentType.ctAPPLICATION_PDF);
RESTRequest.AddFile('file','Test_31_08_2001.json',TRESTContentType.ctAPPLICATION_JSON); Werden die ersten Parameter unterschiedlich benannt ("file1", "file2") werden beide Dateien übertragen (kann man dank "Fiddler" gut verfolgen). Da der Server aber beides mal (vermutlich) die Kennung "file" erwartet, beschwert er sich trotzdem. Ich frage morgen einmal beim API-Anbieter nach. Vielen Dank bis hier schon mal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz