métodos newBuilder(), build()

La clase HttpRequest se usa para describir una solicitud http, que es fácil de entender por su nombre. Este objeto no hace nada por sí mismo, solo contiene información diversa sobre la solicitud http. Por lo tanto, como probablemente ya adivines, la plantilla de Builder también se usa para crearlo.

HttpRequest request = HttpRequest.newBuilder()
	.method1()
	.method2()
	.methodN()
    .build();

Donde entre las llamadas a los métodos newBuilder() y build() necesita llamar a todos los métodos para construir un objetoSolicitud Http.

Un ejemplo de una solicitud simple se ve así:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(“http://codegym.cc”))
    .build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

Puede encontrar todos los métodos de la clase HttpRequest en el enlace de la documentación oficial .

Y luego analizaremos los más populares de ellos.

método uri()

Con el método uri() , puede establecer la URI (o URL) a la que se enviará la solicitud http. Ejemplo:

HttpRequest request = HttpRequest.newBuilder()
    .uri( URI.create(“http://codegym.cc”) )
    .build();

Por cierto, puedes acortar un poco este código pasando el URI directamente al método newBuilder() :

HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();

¡Importante! Un URI se puede crear de dos maneras:

  • nuevoURI(Cadena)
  • URI.create(Cadena)

La segunda forma es preferible. Desafortunadamente, la primera forma no es muy buena, porque el constructor de URI se declara como URI público (String str) arroja URISyntaxException y URISyntaxException es una excepción verificada.

Métodos GET(), POST(), PUT(), DELETE()

Puede configurar el método de solicitud http utilizando los siguientes métodos:

  • CONSEGUIR()
  • CORREO()
  • PONER()
  • BORRAR()

Así es como se vería una solicitud GET simple:

HttpRequest request = HttpRequest.newBuilder()
  .uri(new URI("https://codegym.cc"))
  .GET()
  .build();

método versión()

También puede configurar la versión del protocolo HTTP. Solo hay 2 opciones:

  • HttpClient.Versión.HTTP_1_1
  • HttpClient.Versión.HTTP_2

Supongamos que desea crear una solicitud utilizando el protocolo HTTP/2, luego deberá escribir:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .version( HttpClient.Version.HTTP_2 )
   .GET()
   .build();

Muy simple, ¿no? :)

método de tiempo de espera ()

También puede establecer el tiempo de ejecución de la consulta. Si pasa y la solicitud nunca se completa, se lanzará una HttpTimeoutException .

El tiempo en sí se establece usando el objetoduraciónde la API de fecha y hora de Java. Ejemplo:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .timeout( Duration.of(5, SECONDS) )
   .GET()
   .build();

La presencia de este método muestra que las clases HttpClient y HttpRequest pueden realizar una variedad de tareas. Imagine que está ejecutando una solicitud y algo le sucedió a la red y duró 30 segundos. Es mucho más útil recibir inmediatamente una excepción y reaccionar correctamente.

método de encabezado ()

También puede agregar cualquier cantidad de encabezados a cualquier solicitud. Y es tan fácil de hacer como cualquier otra cosa. Hay un método especial para esto: header() . Ejemplo:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .header("name1", "value1")
   .header("name2", "value2")
   .GET()
   .build();

Hay otra forma alternativa de configurar muchos encabezados a la vez. Puede ser útil si, por ejemplo, convirtió una lista de encabezados en una matriz:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("name1", "value1", "name2", "value2")
   .GET()
   .build();

Todo lo elemental es simple.