Una de las novedades de Java 9 y 10 aunque por el momento en modo de prueba (jdk.incubator.http) es el Cliente HTTP el cual promete agilizar el tiempo de desarrollo de las aplicaciones.
Entre las clases que podemos resaltar están:
Estas clases nos permiten realizar una conexión con un servidor externo y recibir una respuesta todo esto con menos lineas de código de las que estamos acostumbrados. Y precisamente esto es lo que realizaremos en este post, el código dejado a continuación se conectara con https://jsonplaceholder.typicode.com/, un servicio web REST gratuito que sirve para la prueba y desarrollo de Web Services, el programa esperara la respuesta y mostrara el resultado en pantalla.
¿Que necesitamos?
Código Java: HTTP Client
import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.time.Duration; //nuevas librerias http import jdk.incubator.http.HttpClient; import jdk.incubator.http.HttpClient.Redirect; import jdk.incubator.http.HttpRequest; import jdk.incubator.http.HttpResponse; public class Main { public static void main(String[] args) { try { //Cliente HTTP HttpClient httpClient = HttpClient.newBuilder() .version(HttpClient.Version.HTTP_2)//Version de protocolo .followRedirects(Redirect.SAME_PROTOCOL)//Direccionamiento si ALWAYS NEVER SAME_PROTOCOL SECURE //.proxy(ProxySelector.of(new InetSocketAddress("www.direccion-proxy.com", 8080))) proxy //.authenticator(Authenticator.getDefault()) Autenticación .build();// HttpClient.newHttpClient(); //Solicitud HttpRequest httpRequest = HttpRequest.newBuilder() .uri(new URI("https://jsonplaceholder.typicode.com/posts/1/comments"))//URL de solicitud .header("Content-Type", "application/json")//encabezado .timeout(Duration.ofMinutes(1))//Tiempo de espera .GET()//Metodo GET POST PUT .build(); //Respuesta HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandler.asString()//El resultado se almacena en un String ); System.out.println("Codigo de Respuesta: " + httpResponse.statusCode()); System.out.println("/* ----------------------------------------------\r\n" + "* Encabezado\r\n" + "* ------------------------------------------------- */"); httpResponse.headers().map().entrySet().forEach(System.out::println); System.out.println("/* ----------------------------------------------\r\n" + "* Respuesta\r\n" + "* ------------------------------------------------- */"); System.out.println(httpResponse.body()); } catch (URISyntaxException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }
Si utilizas IntelliJ IDEA salta este paso.
Lo nuevo del API http de Java aún esta en proceso de incubación, razón por la cual si tratas de ejecutar este código obtendrás un error del tipo «Java.lang,NoClassDefFoundError»
Para evitar este error, debemos incluir el nombre del paquete indicando su modulo contenedor «–add-modules jdk.incubator.httpclient» en la configuración del proyecto en Eclipse. Si usas IntelliJ IDEA ya no es necesario.
Clic derecho sobre el proyecto -> Debug As -> Debug Configurations…
En la pestaña arguments agregas:
Para guardar cambios, presionar botones Aply y Close
Ejecución y Resultado
Ejecuta el código anterior y obtendremos por respuesta, el «código 200», el encabezado y el resultado de la solicitud en formato JSON.
El código anterior, es un ejemplo de la potencia y flexibilidad que traerá Java en cuanto a HTTP.
Para concluir, volvemos a repetir que esta clase esta en desarrollo y por tanto no se recomienda su uso en proyectos en producción por el momento ya que cuando su desarrollo termine se cambiara el jdk.incubator.http por otro paquete final.
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Para quienes hayan trabajado con JMF saben que es una librería de Java desarrollada por Sun Microsystems para facilitar...
A veces navegando en la internet buscando novedades , investigando o simplemente perdiendo el tiempo 🙂 se encuentran cos...
En este post veremos como imprimir secciones de un formulario en java implementando la Interface Printable. La clase que...
En este post veremos como conectarnos a una base de datos Access con C# En un nuevo proyecto en consola con Visual Studi...
Problema: Escriba un programa en java que permita dibujar con el mouse cuadrados, círculos y triángulos. El usuario debe...
La Inteligencia Artificial (AI – Artificial Intelligence) estará presente en casi cada aspecto de nuestra vida en...
Los comentarios estan cerrados
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...
Gracias por el artículo, muy bueno, espero que se pueda resolver esos URL time out conection que me hacen doler la cabeza . . . un saludo.