Как получить значение параметров из curl в веб-сервис REST в Java - PullRequest
2 голосов
/ 02 июня 2011

Кто-нибудь знает, как получить значения параметров из команды curl в веб-сервисе REST с использованием java. Я написал веб-сервис REST с использованием фреймворка jersey и java в IDE NetBean.Это моя команда curl для загрузки файла без метаданных:

curl -T C:\Users\Folders\a.jpg -H "Content-Type:application/vnd.org.snia.cdmi.dataobject" http://localhost:8080/users/folder/a.jpg 

Это мой метод HttpPut для загрузки

@PUT
@Path("/{directory:.+}")
public Response doPut(@PathParam("directory")String data,byte[]contents)
{
..............
}

Это моя команда curl для загрузки файла с метаданными

curl  --data " { "metadata" : "Username":"name"}" -T C:\Users\Folders\a.jpg -H "Content-Type:application/vnd.org.snia.cdmi.dataobject" http://localhost:8080/users/folder/a.jpg 

Это мой метод HttpPut для загрузки

@PUT
@Path("/{direcotry:.+}")
public Response doPut(@PathParam("directory")String data,byte[]contents,String meta)
{
..............
}

Мой вопрос: когда я загружаю файл без метаданных, я могу загрузить успешно.Но когда я добавляю метаданные, я не могу получить значения «--data» из команды curl в методе doPut.Как я могу решить это?

1 Ответ

1 голос
/ 20 июня 2011

Если вам нужно отправить как двоичный объект двоичных данных (jpg), так и некоторые метаданные (строку json) в одном запросе, я бы рекомендовал запрос , который отправляет форму (тип содержимого application/x-www-form-urlencoded). Это позволяет вам включить оба элемента в тело запроса.

Каждый элемент в запросе сопоставляется с параметром метода с помощью аннотации @FormParam, поэтому у вас будет что-то вроде этого:

@PUT
@Path("/{directory:.+}")
@Consumes("application/x-www-form-urlencoded")
public Response doPut(@PathParam("directory") String directory,
                      @FormParam byte[] image,
                      @FormParam String metadata) {
    ...
}

Подробнее о том, как продолжить тестирование с помощью curl, см. Аргумент --data-urlencode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...