Ich muss ein HTTP Post Multipart erhalten, das nur 2 Parameter enthält:
- Eine JSON-Zeichenfolge
- Eine Binärdatei
Welches ist der richtige Weg, um den Körper einzustellen? Ich werde den HTTP-Aufruf mithilfe der Chrome REST-Konsole testen und frage mich, ob die richtige Lösung darin besteht, einen "Label" -Schlüssel für den JSON-Parameter und die Binärdatei festzulegen.
Auf der Serverseite verwende ich Resteasy 2.x und werde den Multipart-Text folgendermaßen lesen:
@POST
@Consumes("multipart/form-data")
public String postWithPhoto(MultipartFormDataInput multiPart) {
Map <String, List<InputPart>> params = multiPart.getFormDataMap();
String myJson = params.get("myJsonName").get(0).getBodyAsString();
InputPart imagePart = params.get("photo").get(0);
//do whatever I need to do with my json and my photo
}
Ist das der richtige Weg? Ist es richtig, meine JSON-Zeichenfolge mit dem Schlüssel "myJsonName" abzurufen, der diese bestimmte Inhaltsdisposition identifiziert? Gibt es eine andere Möglichkeit, diese beiden Inhalte in einer mehrteiligen HTTP-Anforderung zu empfangen?
Danke im Voraus
Antworten:
Wenn ich Sie richtig verstehe, möchten Sie eine mehrteilige Anforderung manuell über eine HTTP / REST-Konsole erstellen. Das mehrteilige Format ist einfach; Eine kurze Einführung finden Sie in der HTML 4.01-Spezifikation . Sie müssen eine Grenze erstellen, bei der es sich um eine Zeichenfolge handelt, die im Inhalt nicht enthalten ist
HereGoes
. Sie setzen den AnforderungsheaderContent-Type: multipart/form-data; boundary=HereGoes
. Dann sollte dies ein gültiger Anfragetext sein:quelle
\*
zum Beispiel nicht als Grenze funktionieren? Es darf weder in json noch in base64 existieren.