2015-07-27 4 views
0

Рассмотрим следующие функции:Джерси Grizzly Rest Как извлечь «форм-данных» Параметры

@POST 
    @Path("/handle_response") 
    @Produces(MediaType.APPLICATION_JSON) 
    public ResponseJsonBean handle(@FormParam("first") Integer first, @FormParam("second") Integer second) 
    { 
     ////// bla bla 
    } 

выше функция вызывается, когда я делаю POST х-WWW-форм-urlencoded запрос. Но функция не вызывается, когда я делаю запрос данных формы POST. Почему он не вызывается в последнем случае? и как я могу сделать такую ​​функцию, которая работает для последнего запроса.

ответ

1

Да application/x-www-form-urlencoded и multipart/form-data - это самые различные типы и форматы. Правильный провайдер для чтения запроса обнаруживается через отправленный тип.

Для многочастной поддержки, вы должны добавить многосекционную зависимость Джерси

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-multipart</artifactId> 
    <version>${jersey2.version}</version> 
</dependency> 

Тогда в вашем методе ресурсов сделать что-то вроде

@POST 
@Path("/upload") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes({MediaType.MULTIPART_FORM_DATA}) 
public Response uploadFile(
     @FormDataParam("file") InputStream fileInputStream, 
     @FormDataParam("file") FormDataContentDisposition cdh) throws Exception{ 
} 

Смотрите также:

+0

являются многокомпонентные/форм-данных и только форм-данных, одни и те же вещи? –

+0

Нет такой вещи (или, по крайней мере, медиа-типа) в виде данных формы –

+0

На самом деле мне нужно интегрировать мою веб-службу отдыха с разработчиком, который выполняет POSTing простых параметров с использованием данных формы. Файл не загружается. –

Смежные вопросы