wake-up-neo.com

Senden von Multipart/Mixed Content mit der Postman Chrome-Erweiterung

Ich habe Probleme beim Erstellen POST Multipart/Mixed-Request mit Postman Chrome-Erweiterung

Hier mein Curl-Wunsch was Nizza klappt

curl -H "Content-Type: multipart/mixed" 
-F "[email protected]_json.json; type=application/json "
-F "[email protected]; type=image/jpg" -X POST http://my/api/item -i -v

interessanter Teil der Antwort

Inhaltslänge: 41557

Erwarten Sie: 100 weiter

Inhaltstyp: multipart/mixed; Grenze = ---------------------------- 8aaca457e117

  • zusätzliches Zeug nicht gut transfer.c: 1037: 0 0
  • HTTP 1.1 oder höher mit permanenter Verbindung, Pipelining wird unterstützt

Und wenn ich Postman benutze.enter image description here

Ich bekomme eine solche Antwort

{"message":"Could not parse multipart servlet request;
 nested exception is org.Apache.commons.fileupload.FileUploadException: 
 the request was rejected because no multipart boundary was     
 found","type":"error","status":500,"requestId":"1861eloo6fpio"}

Das ist es - ich möchte diesen Fehler beseitigen ... Wenn Sie weitere Informationen benötigen, fragen Sie bitte :)

47
pbaranski

Ich stand auch vor diesem Problem. Kurze Antwort: Entfernen Sie den Content-Type-Header aus Ihrer Postman-Anfrage.

Die lange Geschichte besagt, dass Content-Type für eine mehrteilige Anfrage etwas Besonderes sein sollte - es sollte so aussehen:

multipart/form-data; boundary=----WebKitFormBoundaryzeZR8KqAYJyI2jPL

Das Problem ist, dass die Grenze wichtig ist und genau mit der Grenze übereinstimmen muss, die zum Trennen der hochgeladenen Dateien verwendet wird. Die Lösung ist einfach: Geben Sie keinen Content-Type an! Wenn Sie Dateien hochladen, fügt Postman den obigen Inhaltstyp automatisch für Sie hinzu, mit der Ausnahme, dass die Begrenzung mit dem von Postman oder Chrome verwendeten Bereich gefüllt wird, um den mehrteiligen Inhalt zu trennen.

Sie können dieses Verhalten überprüfen, indem Sie die Chrome-Entwicklertools (in Postman) verwenden, um den hinzugefügten Content-Type-Header zusätzlich zu den Content-Disposition-Headern der mehrteiligen Daten zu prüfen, die auch manuell zu konstruieren sind (und nicht in Postman möglich sind).

Hinweis : Meine Antwort ist eine Lösung für diejenigen, die eine multipart/form-data-Antwort benötigen. Das OP suchte nach einer multipart/mixed-Lösung. Meine Antwort wird in diesem Szenario nicht ausreichen. Davon abgesehen scheint es, dass viele Leute nur die multipart/form-data-Lösung wollen, daher werde ich meine Antwort hier lassen.

86
Kirk Woll

Hat diesen Kommentar abgegeben am: https://github.com/postmanlabs/postman-app-support/issues/1104

Ninja update: Nicht sicher, ob dies für alle anderen hilfreich ist. Es gibt jedoch eine Problemumgehung für ein bestimmtes Szenario, in dem mehrere Dateitypen/Inhaltstypen in einer einzigen mehrteiligen Anforderung POST hochgeladen werden.

  1. Setzen Sie den Header Content-Type auf multipart/mixed.
  2. Wählen Sie in Body die Option form-data aus.
  3. Konvertieren Sie alle Ihre Artikel in Dateien. String-Inhalt sollte eine Textdatei werden usw.
  4. Fügen Sie jede Datei hinzu, indem Sie file auswählen und einen Schlüsselnamen hinzufügen.

Bei diesem Ansatz müssen Sie nicht jeden Content-Type oder Content-Disposition manuell angeben. Der Trick dabei war, alle relevanten Inhalte in einen persistenten Dateityp zu serialisieren. Sie können den Schritt "Konvertieren in eine Datei" ignorieren, wenn es sich um Text handelt :) Hoffe, das hilft jemandem!

0
Adam Gerard