Невозможно указать, какой тип ответа принимается при вызове API-интерфейса Джерси - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть API-интерфейс на Джерси, который ранее был настроен на ответ XML (JAXB marshalling, @Produces ("application / xml")). Теперь я хочу добавить возможность запрашивать ответы в формате JSON с использованием совместимости JAXB / JSON.

Я изменил аргумент моей аннотации @Produces на {"application / json", "application / xml"}, который устанавливает JSON в качестве типа ответа по умолчанию. Затем я делаю следующие звонки, чтобы получить пользователя по электронной почте, используя cUrl:

curl -k https://api.mywebservice.com/service/user/email/foo@bar.com

возвращает JSON-ответ, как и ожидалось.

curl -k -H "accepts: application/xml" -H "content-type: application/xml" https://api.mywebservice.com/service/user/email/foo@bar.com

также создает ответ JSON.

Конечно, первым делом я поменял аннотацию на @Produces {"application / xml", "application / json"} и больше не мог получать ответ JSON, даже если я указал его в заголовке.

Любые мысли или предложения будут с благодарностью. Спасибо.

1 Ответ

4 голосов
/ 05 апреля 2011

Заголовок называется Accept, поэтому вам необходимо вызвать:

curl -k <b>-H "accept: application/xml"</b> https://api.mywebservice.com/service/user/email/foo@bar.com

Также заголовок Content-Type предназначен для указания типа носителя данных, отправляемых на сервер в запросе POST или PUTтак что вы должны просто оставить это для запросов GET.

...