Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Lo nuevo de HTTP Client

Lo nuevo de HTTP Client

Autor jc mouse martes, mayo 29, 2018

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:

  • HttpClient, es el contenedor de toda la información de configuración
  • HttpRequest, es la solicitud que se enviara a través de HttpClient
  • HttpResponse, el resultado de la llamada HttpRequest

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?

  • IDE Eclipse Oxygen 3a o IntelliJ IDEA
  • JDK 9 o 10
  • Conexión a internet

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

error clase no encontrada

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:

incubator class

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.

java 9

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!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Gráficos de tortas en iReport

Gráficos de tortas en iReport

Los gráficos de torta, también llamados gráficos de 360 grados o circulares, son gráficos estadísticos que se utilizan p...

Rompecabezas [Código Fuente]

Rompecabezas [Código Fuente]

Hace tiempo me pidieron el código fuente de un juego de Puzzle de Neon Genesis Evangelión, este juego es completo, tiene...

Crea tu propia aplicacion para realizar llamadas

Crea tu propia aplicacion para realizar llamadas

En este tutorial Android Bolivia 🙂 construiremos una sencilla aplicación para realizar llamadas por teléfono, aprenderem...

Reproducir video en JFrame Swing con JavaFX

Reproducir video en JFrame Swing con JavaFX

JavaFX un producto de  Sun Microsystems/Oracle Corporation que salio a la luz para competir con tecnologías como Flash o...

Construye tu swing Versus para el mundial 2014

Construye tu swing Versus para el mundial 2014

Para ponerse a tono con el ambiente mundialista de Brasil 2014, en este post construiremos un swing java al que llamarem...

MVC Java y Base de Datos Tutorial

MVC Java y Base de Datos Tutorial

En post pasados [Ejemplo práctico de MVC java Swing con Netbeans, 3 en raya java con MVC y Netbeans , MVC: Modelo, Vista...

1 comentario en “Lo nuevo de HTTP Client”

  1. Israel dice:

    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.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Sans Forgetica es una fuente diseñada utilizando los principios de la psicología cognitiva para ayudar a recordar mejor...

Facebook la compañía de Mark Zuckerberg confirmó hace unas semanas que la Red Social había sido hackeado debido a una br...

Google+ o Google plus como también se le conoce a la red social del gigante de la informática Google cerrará para siempr...

Como dice un viejo dicho, “La practica hace al maestro” y en el mundo de la programación no es diferente, po...

Android Bolivia

MAUS