Com o JSR 311 e suas implementações, temos um padrão poderoso para expor objetos Java via REST. No entanto, no lado do cliente, parece haver algo em falta comparável ao Apache Axis para SOAP - algo que oculta o serviço da Web e empacota os dados de forma transparente de volta aos objetos Java.
Como você cria clientes Java RESTful? Usando HTTPConnection e análise manual do resultado? Ou clientes especializados, por exemplo, Jersey ou Apache CXR?
Respostas:
Esta é uma pergunta antiga (2008), portanto há muito mais opções do que antes:
ATUALIZAÇÕES (projetos ainda ativos em 2020):
Async-http-client pelo Sonatype.Uma ressalva na escolha de clientes HTTP / REST. Certifique-se de verificar o que sua pilha de estrutura está usando para um cliente HTTP, como funciona a segmentação e, idealmente, use o mesmo cliente, se ele oferecer um. Ou seja, se você estiver usando algo como Vert.x ou Play, tente usar o cliente de apoio para participar de qualquer loop de barramento ou reator que a estrutura forneça ... caso contrário, esteja preparado para possíveis problemas de segmentação.
fonte
Como mencionei neste tópico , costumo usar Jersey, que implementa o JAX-RS e vem com um bom cliente REST. O bom é que, se você implementar seus recursos RESTful usando JAX-RS, o cliente Jersey poderá reutilizar os provedores de entidades como JAXB / XML / JSON / Atom e assim por diante - para poder reutilizar os mesmos objetos no lado do servidor. use no teste de unidade do lado do cliente.
Por exemplo aqui é um caso de teste de unidade do projeto Apache Camel que olha para cima payloads XML a partir de um recurso RESTful (usando os Endpoints JAXB objeto). O método resource (uri) é definido nesta classe base, que apenas usa a API do cliente Jersey.
por exemplo
BTW Espero que a versão futura do JAX-RS adicione uma API agradável do lado do cliente ao longo da linha de Jersey
fonte
Você pode usar as APIs Java SE padrão:
Ou você pode usar as APIs do cliente REST fornecidas pelas implementações do JAX-RS, como Jersey. Essas APIs são mais fáceis de usar, mas requerem jars adicionais no caminho da sua classe.
Para mais informações, veja:
fonte
Se você deseja apenas chamar um serviço REST e analisar a resposta, pode experimentar o Rest Assured
fonte
Você também pode verificar o Restlet, que possui recursos completos do lado do cliente, mais orientado para REST que as bibliotecas de nível inferior, como HttpURLConnection ou Apache HTTP Client (que podemos utilizar como conectores).
Atenciosamente, Jerome Louvel
fonte
Você poderia tentar Rapa . Deixe-nos saber o seu feedback sobre o mesmo. E fique à vontade para registrar problemas ou recursos esperados.
fonte
Eu gostaria de destacar mais duas opções:
fonte
Tente
JdkRequest
em jcabi-http (eu sou desenvolvedor). É assim que funciona:Verifique esta publicação no blog para obter mais detalhes: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
fonte
Eu tentei recentemente Retrofit Library da square, é ótimo e você pode chamar sua API de descanso com muita facilidade. A configuração baseada em anotação nos permite eliminar grande parte da codificação da placa da caldeira.
fonte
Eu uso o Apache HTTPClient para lidar com todo o lado HTTP das coisas.
Escrevo analisadores XML SAX para o conteúdo XML que analisa o XML em seu modelo de objeto. Acredito que o Axis2 também expõe métodos XML -> Model (o Axis 1 ocultou essa parte, irritantemente). Geradores XML são trivialmente simples.
Não demora muito para codificar e é bastante eficiente, na minha opinião.
fonte
O OkHttp é leve e poderoso quando combinado com o Retrofit também. Isso funciona bem para uso geral em Java e no Android.
OkHttp : http://square.github.io/okhttp/
Retrofit : http://square.github.io/retrofit/
fonte
Como ninguém mencionou, aqui está outro: Feign , que é usado pelo Spring Cloud .
fonte
Embora seja simples criar um cliente HTTP e fazer um novo pedido. Mas se você quiser usar alguns clientes gerados automaticamente, poderá usar o WADL para descrever e gerar código.
Você pode usar o RestDescribe para gerar e compilar o WSDL, você pode gerar clientes em php, ruby, python, java e C # usando isso. Ele gera código limpo e há uma boa alteração que você precisa ajustá-lo um pouco após a geração do código, você pode encontrar boa documentação e pensamentos subjacentes por trás da ferramenta aqui .
Existem poucas ferramentas interessantes e úteis de WADL mencionadas no wintermute.
fonte
Eu escrevi uma biblioteca que mapeia uma interface java para um serviço JSON REST remoto:
https://github.com/ggeorgovassilis/spring-rest-invoker
fonte
Tente olhar para http-rest-client
https://github.com/g00dnatur3/http-rest-client
Aqui está um exemplo simples:
A biblioteca cuida da serialização e ligação do json para você.
Aqui está outro exemplo,
E um último exemplo,
Felicidades!
fonte
Exemplos de jersey Rest client:
Adicionando dependência:
ForGetMethod e passando dois parâmetros:
GetMethod passando um parâmetro e Obtendo uma resposta de lista:
Em Acima, ele retorna uma lista que estamos aceitando como uma lista e depois a convertemos em Json Array e, em seguida, Json Array em List.
Se o pedido posterior passar o objeto Json como parâmetro:
fonte
Usei o RestAssured na maioria das vezes para analisar a resposta do serviço de descanso e testar os serviços. Além de ter certeza, usei as bibliotecas abaixo também para me comunicar com os serviços Resful.
uma. Jersey Rest Client
b. Suporte de mola
c. Cliente HTTP Apache
fonte
Atualmente, estou usando https://github.com/kevinsawicki/http-request Eu gosto da simplicidade e da maneira como os exemplos são mostrados, mas principalmente eu fui vendido quando li:
que resolveu alguns problemas em um projeto java 1.6. Quanto à decodificação de json em objetos, o gson é invencível :)
fonte