AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Data)
Thema durchsuchen
Ansicht
Themen-Optionen

Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Data)

Ein Thema von AuronTLG · begonnen am 16. Nov 2018 · letzter Beitrag vom 20. Nov 2018
Antwort Antwort
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
269 Beiträge
 
Delphi 12 Athens
 
#1

Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Data)

  Alt 16. Nov 2018, 17:12
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:
----------------------------BOUNDARY
Content-Disposition: form-data;
name="upload"; filename="upload.zip"
Content-Type: application/octet-stream
Datei
----------------------------BOUNDARY--
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.).

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.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Dat

  Alt 17. Nov 2018, 15:22
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 REST.Client.TCustomRESTRequest.DoPrepareRequestBody und REST.Client.TCustomRESTRequest.DoApplyHeaderParams , um die Funktionsweise zu verstehen und zu schauen, ob dein Requests wie gewünscht gebaut wird.
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.

Geändert von TiGü (17. Nov 2018 um 15:30 Uhr)
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
269 Beiträge
 
Delphi 12 Athens
 
#3

AW: Upload einer ZIP-Datei über REST-Schnittstelle nach vorgegebenem Muster (Form-Dat

  Alt 20. Nov 2018, 11:50
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz