Невозможно указать, какой тип ответа принимается при вызове api Джерси
У меня есть api Джерси, который ранее был настроен для ответа с помощью XML (JAXB marshalling, @Products ("application / xml")). Теперь я хочу добавить возможность запрашивать ответы в формате JSON, используя совместимость JAXB/JSON.
Я изменил аргумент на мой @ производит аннотацию, чтобы быть {"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 ответ:
Заголовок называется
Accept
, поэтому вам нужно вызвать:curl -k -H "accept: application/xml" https://api.mywebservice.com/service/user/email/foo@bar.comТакже Заголовок
Content-Type
предназначен для указания типа носителя данных, отправляемых на сервер в запросе POST или PUT, поэтому его следует просто оставить для запросов GET.