С JSR 311 и его реализациями у нас есть мощный стандарт для представления объектов Java через REST. Однако на стороне клиента, похоже, чего-то не хватает, что сравнимо с Apache Axis для SOAP - что-то, что скрывает веб-сервис и прозрачно направляет данные обратно в объекты Java.
Как вы создаете Java RESTful клиенты? Используя HTTPConnection и ручной анализ результата? Или специализированные клиенты, например, для Джерси или Apache CXR?
Ответы:
Это старый вопрос (2008), поэтому вариантов сейчас намного больше, чем было тогда:
ОБНОВЛЕНИЯ (проекты все еще активны в 2020 году):
Async-http-client от Sonatype.Предупреждение о выборе клиентов HTTP / REST. Убедитесь, что вы проверили, что использует ваш стек фреймворка для HTTP-клиента, как он работает с потоками, и в идеале используйте тот же клиент, если он его предлагает. То есть, если вы используете что-то вроде Vert.x или Play, вы можете попытаться использовать его поддерживающий клиент для участия в любом цикле шины или реактора, который предоставляет инфраструктура ... в противном случае будьте готовы к возможным интересным проблемам с потоками.
источник
Как я уже упоминал в этой теме, я склонен использовать Jersey, который реализует JAX-RS и поставляется с хорошим REST-клиентом. Приятно то, что если вы реализуете свои ресурсы RESTful с использованием JAX-RS, тогда клиент Джерси может повторно использовать провайдеры сущностей, такие как JAXB / XML / JSON / Atom и т. Д., Чтобы вы могли повторно использовать те же объекты на стороне сервера, что и вы использовать на клиентской стороне модульного теста.
Например, вот пример модульного теста из проекта Apache Camel, который ищет полезные нагрузки XML из ресурса RESTful (используя конечные точки объекта JAXB). Метод resource (uri) определен в этом базовом классе, который просто использует клиентский API Джерси.
например
Кстати, я надеюсь, что в будущей версии JAX-RS будет добавлен приятный API на стороне клиента по аналогии с тем, что в Джерси
источник
Вы можете использовать стандартные API Java SE:
Или вы можете использовать клиентские API REST, предоставляемые реализациями JAX-RS, такими как Джерси. Эти API-интерфейсы проще в использовании, но требуют дополнительных jar-файлов на пути вашего класса.
Для получения дополнительной информации см .:
источник
Если вы хотите только вызвать службу REST и проанализировать ответ, вы можете попробовать Rest Assured
источник
Вы также можете проверить Рестлет который обладает полными возможностями на стороне клиента, более ориентирован на REST, чем библиотеки более низкого уровня, такие как HttpURLConnection или Apache HTTP Client (которые мы можем использовать в качестве коннекторов).
С наилучшими пожеланиями, Джером Лувель
источник
Вы можете попробовать Rapa . Дайте нам знать ваши отзывы о том же. И не стесняйтесь регистрировать проблемы или ожидаемые функции.
источник
Я хотел бы отметить еще 2 варианта:
источник
Попробуйте
JdkRequest
из jcabi-http (я разработчик). Вот как это работает:Проверьте этот блог для получения более подробной информации: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
источник
Я недавно попробовал Retrofit Library с квадрата, это здорово, и вы можете легко вызывать API отдыха. Конфигурация на основе аннотаций позволяет нам избавиться от большого количества кодировки котельной плиты.
источник
Я использую Apache HTTPClient для обработки всех аспектов HTTP.
Я пишу синтаксические анализаторы XML SAX для содержимого XML, которое анализирует XML в вашей объектной модели. Я считаю, что Axis2 также предоставляет методы XML -> Model (Axis 1, к сожалению, скрыл эту часть). Генераторы XML тривиально просты.
Кодирование не занимает много времени и, на мой взгляд, достаточно эффективно.
источник
OkHttp легкий и мощный в сочетании с Retrofit. Это хорошо работает для общего использования Java, а также на Android.
OkHttp : http://square.github.io/okhttp/
Модернизация : http://square.github.io/retrofit/
источник
Поскольку никто не упомянул, вот еще один: Feign , который используется Spring Cloud .
источник
Хотя создать HTTP-клиента и выполнить его просто. Но если вы хотите использовать некоторые автоматически сгенерированные клиенты, вы можете использовать WADL для описания и генерации кода.
Вы можете использовать RestDescribe для генерации и компиляции WSDL, вы можете генерировать клиентов в php, ruby, python, java и C #, используя это. Он генерирует чистый код, и есть хорошее изменение, которое вы должны немного изменить после генерации кода, вы можете найти хорошую документацию и основные идеи позади инструмента здесь .
Есть несколько интересных и полезных инструментов WADL упомянутых на wintermute.
источник
Я написал библиотеку, которая отображает интерфейс Java на удаленную службу JSON REST:
https://github.com/ggeorgovassilis/spring-rest-invoker
источник
Я использовал RestAssured большую часть времени, чтобы проанализировать ответ службы покоя и протестировать службы. Кроме того, я был уверен, что для связи со службами Resful я также использовал следующие библиотеки.
а. Джерси Отдых Клиента
б. Spring RestTemplate
с. Apache HTTP Client
источник
Попробуйте посмотреть на http-rest-client
https://github.com/g00dnatur3/http-rest-client
Вот простой пример:
Библиотека заботится о сериализации и связывании json для вас.
Вот еще один пример,
И последний пример,
Ура!
источник
Примеры клиента отдыха Джерси:
Добавление зависимости:
ForGetMethod и передача двух параметров:
GetMethod передает один параметр и получает ответ из списка:
Выше он возвращает список, который мы принимаем как список, а затем преобразуем его в массив Json, а затем массив Json в список.
Если после запроса отправить объект Json в качестве параметра:
источник
В настоящее время я использую https://github.com/kevinsawicki/http-request. Мне нравится их простота и способ показа примеров, но в основном я был продан, когда прочитал:
которая разобралась с некоторыми проблемами в проекте Java 1.6. Что касается декодирования json в объекты, то gson просто непобедим :)
источник