![]() |
Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Data)
Hallo,
ich bin momentan dabei, auszutesten, ob ich es mit den Delphi-REST-Komponenten hinbekomme, eine bestimmte Schnittstelle anzusprechen. Hierbei ist es für eine Upload-Funktion unter anderem notwendig, eine Zip-Datei an eine Multipart-Form-Data dranzuhängen. Da leider sowohl die Schnittstellenbeschreibung als auch die Komponentendokumentation nicht besonders toll ist, habe ich damit ein paar Probleme... Das entsprechende Beispiel der Form-Data-Beschreibung für die anzuhängende ZIP-Datei sieht folgendermaßen aus:
Code:
Im Prinzip rätsele ich darüber, wie genau ich mit den REST-Komponenten hantieren muss, um diese gewünschte Ausgabe hinzubekommen, was sich schwierig gestaltet, da es meines Wissens keine Möglichkeit gibt, sich anzuschauen, was genau versandt wird (Bei den SOAP-Komponenten konnte ich mir die erstellte XML anschauen z.B.).
----------------------------BOUNDARY
Content-Disposition: form-data; name="upload"; filename="upload.zip" Content-Type: application/octet-stream Datei ----------------------------BOUNDARY-- Momentan experimentiere ich mit dem TIdMultipartFormDataStream rum, da der für sowas gedacht zu sein scheint, bekomme es aber soweit nicht hin. Im Prinzip habe ich versucht, den Stream dem RESTRequest als Parameter zu übergeben... Daher wollte ich hiermit mal nachfragen, ob sich jemand mit diesen Komponenten auskennt und mir verraten kann, wie ich das mit der Datei hinbekomme. Sollte jemand eine Möglichkeit kennen, wie ich meine RESTRequest-Ausgabe im Form-Data-Format überprüfen kann, falls das irgendwie geht, wäre das auch eine große Hilfe. |
AW: Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Dat
Delphi-Quellcode:
DeinRestRequest.Params.AddItem
Mit der Instanz des zurückgegeben TRESTRequestParameter kannst du verschiedene Flags und Einstellungen setzen. Da musst du ein bisschen den Komponentenquelltext lesen und ggf. nachdebuggen. Wichtig ist hier das setzen des TRESTRequestParameterKind als pkFile und du musst darauf achten, das der Content-Type stimmt. Debugge dich durch
Delphi-Quellcode:
und
REST.Client.TCustomRESTRequest.DoPrepareRequestBody
Delphi-Quellcode:
, um die Funktionsweise zu verstehen und zu schauen, ob dein Requests wie gewünscht gebaut wird.
REST.Client.TCustomRESTRequest.DoApplyHeaderParams
Bei einem ähnlichen Problem müsste ich diese virtual Methoden aber mal überschreiben und etwas anpassen, damit es geklappt hat. Eventuell musst du das auch machen. Zum Thema REST-Request angucken: Kannst den Bodystream als TStringStream casten und dir angucken oder du nutzt die Suchmaschine deiner Wahl für "intercept Rest request" und nutzt eines der zahlreichen Tools. Postman bietet sich an. |
AW: Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Dat
Nach ein bisschen Rumsuchen im DoPrepareRequestBody scheint das Ganze bereits mit den korrekten Parametern im AddItem zu funktionieren.
Ich hatte wohl etwas zu kompliziert gedacht. Vielen Dank für die Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 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 by Thomas Breitkreuz