métodos newBuilder(), build()
A classe HttpRequest é usada para descrever uma solicitação http, que é fácil de entender pelo nome. Este objeto não faz nada sozinho, apenas contém várias informações sobre a solicitação http. Portanto, como você provavelmente já adivinhou, o modelo Builder também é usado para criá-lo.
HttpRequest request = HttpRequest.newBuilder()
.method1()
.method2()
.methodN()
.build();
Onde entre chamadas aos métodos newBuilder() e build() você precisa chamar todos os métodos para construir um objetoHttpRequest.
Um exemplo de uma solicitação simples se parece com isso:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(“http://codegym.cc”))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
Você pode encontrar todos os métodos da classe HttpRequest no link da documentação oficial .
E então vamos analisar o mais popular deles.
método uri()
Usando o método uri() , você pode definir o URI (ou URL) para o qual a solicitação http será enviada. Exemplo:
HttpRequest request = HttpRequest.newBuilder()
.uri( URI.create(“http://codegym.cc”) )
.build();
A propósito, você pode tornar esse código um pouco mais curto passando a URI diretamente para o método newBuilder() :
HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();
Importante! Um URI pode ser criado de duas maneiras:
- novoURI(String)
- URI.create(String)
A segunda maneira é preferível. A primeira forma, infelizmente, não é muito boa, porque o construtor URI é declarado como public URI(String str) lança URISyntaxException , e URISyntaxException é uma exceção verificada.
Métodos GET(), POST(), PUT(), DELETE()
Você pode definir o método de solicitação http usando os seguintes métodos:
- PEGAR()
- PUBLICAR()
- COLOCAR()
- EXCLUIR()
Veja como seria uma solicitação GET simples:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.GET()
.build();
método version()
Você também pode definir a versão do protocolo HTTP. Existem apenas 2 opções:
- HttpClient.Version.HTTP_1_1
- HttpClient.Version.HTTP_2
Digamos que você queira criar uma requisição usando o protocolo HTTP/2, então você precisará escrever:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.version( HttpClient.Version.HTTP_2 )
.GET()
.build();
Muito simples, não é? :)
método timeout()
Você também pode definir o tempo de execução da consulta. Se passar e a solicitação nunca for concluída, um HttpTimeoutException será lançado .
A hora em si é definida usando o objetoduraçãoda API Java DateTime. Exemplo:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.timeout( Duration.of(5, SECONDS) )
.GET()
.build();
A presença desse método mostra que as classes HttpClient e HttpRequest podem executar uma variedade de tarefas. Imagine que você está executando uma solicitação e algo aconteceu com a rede e durou 30 segundos. É muito mais útil receber imediatamente uma exceção e reagir a ela corretamente.
método header()
Você também pode adicionar qualquer número de cabeçalhos a qualquer solicitação. E é tão fácil de fazer quanto qualquer outra coisa. Existe um método especial para isso - header() . Exemplo:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.header("name1", "value1")
.header("name2", "value2")
.GET()
.build();
Existe outra maneira alternativa de definir muitos cabeçalhos de uma só vez. Pode ser útil se, por exemplo, você converter uma lista de cabeçalhos em um array:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("name1", "value1", "name2", "value2")
.GET()
.build();
Tudo elementar é simples.
GO TO FULL VERSION