Con JSR 311 y sus implementaciones, tenemos un potente estándar para exponer objetos Java a través de REST. Sin embargo, en el lado del cliente, parece que falta algo que sea comparable a Apache Axis for SOAP, algo que oculta el servicio web y ordena los datos de forma transparente a los objetos Java.
¿Cómo se crean clientes RESTful de Java? ¿Usa HTTPConnection y análisis manual del resultado? ¿O clientes especializados para, por ejemplo, Jersey o Apache CXR?
Respuestas:
Esta es una vieja pregunta (2008), por lo que ahora hay muchas más opciones que antes:
ACTUALIZACIONES (proyectos aún activos en 2020):
Async-http-client por Sonatype.Una advertencia sobre la selección de clientes HTTP / REST. Asegúrese de verificar qué está utilizando su stack de framework para un cliente HTTP, cómo se enhebra, e idealmente use el mismo cliente si ofrece uno. Es decir, si usa algo como Vert.x o Play, puede intentar usar su cliente de respaldo para participar en cualquier bus o bucle de reactor que proporcione el marco ... de lo contrario, esté preparado para posibles problemas de subprocesos interesantes.
fuente
Como mencioné en este hilo , tiendo a usar Jersey que implementa JAX-RS y viene con un buen cliente REST. Lo bueno es que si implementa sus recursos RESTful utilizando JAX-RS, el cliente de Jersey puede reutilizar los proveedores de entidades como JAXB / XML / JSON / Atom, etc., para que pueda reutilizar los mismos objetos en el lado del servidor que usted utilizar en la prueba de unidad del lado del cliente.
Por ejemplo, aquí hay un caso de prueba de unidad del proyecto Apache Camel que busca cargas XML desde un recurso RESTful (utilizando los puntos finales del objeto JAXB). El método de recursos (uri) se define en esta clase base que solo usa la API del cliente de Jersey.
p.ej
Por cierto, espero que la versión futura de JAX-RS agregue una buena API del lado del cliente en la línea de la de Jersey
fuente
Puede usar las API estándar de Java SE:
O puede usar las API de cliente REST proporcionadas por implementaciones JAX-RS como Jersey. Estas API son más fáciles de usar, pero requieren frascos adicionales en su ruta de clase.
Para más información, ver:
fuente
Si solo desea invocar un servicio REST y analizar la respuesta, puede probar Rest Assured
fuente
También puede verificar Restlet, que tiene capacidades completas del lado del cliente, más REST orientado que las bibliotecas de nivel inferior como HttpURLConnection o Apache HTTP Client (que podemos aprovechar como conectores).
Saludos cordiales, Jerome Louvel
fuente
Podrías probar Rapa . Háganos saber sus comentarios sobre lo mismo. Y siéntase libre de registrar problemas o características esperadas.
fuente
Me gustaría señalar 2 opciones más:
fuente
Prueba
JdkRequest
desde jcabi-http (soy desarrollador). Así es como funciona:Consulte esta publicación de blog para obtener más detalles: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
fuente
Recientemente he intentado Retrofit Library desde el cuadrado, es genial y puedes llamar a tu API de descanso muy fácilmente. La configuración basada en anotaciones nos permite eliminar gran parte de la codificación de la placa de la caldera.
fuente
Yo uso Apache HTTPClient para manejar todo el lado HTTP de las cosas.
Escribo analizadores XML SAX para el contenido XML que analiza el XML en su modelo de objetos. Creo que Axis2 también expone XML -> Métodos de modelo (Axis 1 ocultó esta parte, molesto). Los generadores XML son trivialmente simples.
No lleva mucho tiempo codificar, y es bastante eficiente, en mi opinión.
fuente
OkHttp es ligero y potente cuando se combina con Retrofit también. Esto funciona bien para el uso general de Java, así como en Android.
OkHttp : http://square.github.io/okhttp/
Modificación : http://square.github.io/retrofit/
fuente
Como nadie mencionó, aquí hay otro: Feign , que es utilizado por Spring Cloud .
fuente
Aunque es simple crear un cliente HTTP y realizar una solicitud. Pero si desea utilizar algunos clientes generados automáticamente, puede utilizar WADL para describir y generar código.
Puede usar RestDescribe para generar y compilar WSDL, puede generar clientes en php, ruby, python, java y C # usando esto. Genera código limpio y hay un buen cambio que debe modificar un poco después de la generación del código, puede encontrar buena documentación y pensamientos subyacentes detrás de la herramienta aquí .
Hay pocas herramientas WADL interesantes y útiles mencionadas en wintermute.
fuente
Escribí una biblioteca que asigna una interfaz de Java a un servicio JSON REST remoto:
https://github.com/ggeorgovassilis/spring-rest-invoker
fuente
He usado RestAssured la mayor parte del tiempo para analizar la respuesta resto servicio y poner a prueba los servicios. Además de Rest Assured, también utilicé las bibliotecas siguientes para comunicarme con los servicios de Resful.
a. Jersey Rest Client
si. Plantilla de descanso de primavera
C. Cliente HTTP Apache
fuente
Intenta mirar http-rest-client
https://github.com/g00dnatur3/http-rest-client
Aquí hay un ejemplo simple:
La biblioteca se encarga de la serialización y el enlace de json por usted.
Aquí hay otro ejemplo,
Y un último ejemplo,
¡Salud!
fuente
Ejemplos de Jersey Rest Client:
Agregar dependencia:
ForGetMethod y pasando dos parámetros:
GetMethod pasando un parámetro y Obteniendo un Respone de Lista:
En Above It, devuelve una Lista que aceptamos como Lista y luego la convertimos en Json Array y luego Json Array en List.
Si la solicitud posterior pasa el objeto Json como parámetro:
fuente
Actualmente estoy usando https://github.com/kevinsawicki/http-request Me gusta su simplicidad y la forma en que se muestran los ejemplos, pero principalmente me vendieron cuando leí:
que solucionó algunos problemas en un proyecto java 1.6. En cuanto a decodificar json en objetos, gson es simplemente invencible :)
fuente