Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Lo nuevo de HTTP Client

Lo nuevo de HTTP Client

Por 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

Artículos similares

Laberinto del Terror (Código Fuente + juego)

El laberinto del terror es un juego en el que haciendo uso del ratón y de tu pulso de borracho debes cruzar distintos la[...]

Sumar 2 numeros

Una vez que terminamos el obligatorio 🙂 «Hola mundo«, podemos crear aplicaciones un tanto más elaboradas, pero para nada[...]

Tangram: El rompecabezas chino

El Tangram es un juego chino muy antiguo, esta compuesto por 7 piezas: un paralelogramo (romboide), un cuadrado y 5 triá[...]

Galeria de imagene en java

En este tutorial crearemos una Galeria de Imagenes al estilo de javascript o flash con Java y el IDE Netbeans 6.9. 1. Cr[...]

Transición de imágenes al estilo PowerPoint

¿Qué es una transición? Una transición es un efecto de movimiento que se da entre una imagen y la siguiente en una prese[...]

Detección de rostros con android

La API de Android ha ido evolucionado rápidamente y cada vez contiene más funcionalidades que hacen que desarrollar sist[...]