servlet issue from example create java json rest http resteasy

java - issue - REST: HTTP Post Multipart con JSON



jira rest api example (1)

Si lo entiendo correctamente, quiere redactar una solicitud de varias partes manualmente desde una consola HTTP / REST. El formato multiparte es simple; una breve introducción se puede encontrar en la especificación HTML 4.01 . Necesitas llegar a un límite, que es una cadena que no se encuentra en el contenido, digamos HereGoes . Establece el encabezado de solicitud Content-Type: multipart/form-data; boundary=HereGoes Content-Type: multipart/form-data; boundary=HereGoes . Entonces este debería ser un cuerpo de solicitud válido:

--HereGoes Content-Disposition: form-data; name="myJsonString" Content-Type: application/json {"foo": "bar"} --HereGoes Content-Disposition: form-data; name="photo" Content-Type: image/jpeg Content-Transfer-Encoding: base64 <...JPEG content in base64...> --HereGoes--

Necesito recibir un HTTP Post Multipart que contiene solo 2 parámetros:

  • Una cadena JSON
  • Un archivo binario

¿Cuál es la forma correcta de configurar el cuerpo? Voy a probar la llamada HTTP usando la consola REST de Chrome, así que me pregunto si la solución correcta es establecer una clave "etiqueta" para el parámetro JSON y el archivo binario.

En el lado del servidor estoy usando Resteasy 2.x, y voy a leer el cuerpo Multipart de esta manera:

@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 }

¿Es este el camino a seguir? ¿Es correcto recuperar mi cadena JSON usando la clave "myJsonName" que identifica esa determinada disposición de contenido? ¿Hay alguna otra manera de recibir estos 2 contenidos en una sola solicitud HTTP multiparte?

Gracias por adelantado