У меня есть службы JAX-RS REST, используя JEE 7 (развернут в GlassFish), который имеет метод для обработки HTTP POST на ресурсе:Потребляющие данные muiltipart POST в JAX-RS REST службы
@POST
@Path(value="{dId}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response sendStatus(@Context HttpServletRequest request)
Я стараюсь, чтобы извлечь данные из нескольких частей, как:
Collection<Part> parts = request.getParts();
if(parts==null || parts.isEmpty()){
lg.warn("Empty/non-existent parts in request body!");
return sendBadRequestError(sp);
}
затем я пытаюсь имитировать клиентский запрос многослойную POST, используя RestClient (от wiztools.org), с по крайней мере 2-х частей различных типов содержимого (граница разделителем автоматически установленный инструментом RESTClient).
Я проверяю в wirehark, что его правильный запрос, который отправляется из RESTClient (без искаженного пакета и т. Д.).
Однако, все запросы, похоже, попали в блок, содержащий Пустые/несуществующие части в запросе тела сообщение с указанием, что в запросе не найдено частей.
Я много раз искал в Stackoverflow перед публикацией, и все примеры/решения касаются случая использования, когда вы загружаете файл/изображение, что не относится к делу.
Служба отдыха просто потребляет многопользовательский запрос, который может состоять из одной части с данными JSON, другой частью с простой строкой или другими данными JSON.
Есть что-то не хватает - пожалуйста, помогите?. Есть ли какой-то другой способ разобрать многостраничные данные, которые попадают в службу REST?
Прошу совета.
Спасибо. J
В главе 9 JSR-339 указано, какие типы могут использоваться с '@ Context'. Работает ли он, если вместо этого вы используете '@ FormParam'? Или используя интерфейс запроса (http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Request.html) вместо HttpServletRequest? –
Я думаю, что Джерси уже прочитал входной поток. Используйте API-интерфейсы Jersey multipart вместо прямого доступа к HttpServletRequest. См. [Поддержка многостраничных объявлений] (https://jersey.java.net/documentation/latest/media.html#multipart) –
Спасибо MartijnBurger и peeskillet за ваши предложения. Позвольте мне попробовать эти варианты и вернуться. – Javy