terça-feira, 23 de maio de 2023

Fazendo requisições com HTTP Client do Java 11

     O Java 11 introduziu uma API nativa para fazer chamadas HTTP, substituindo o pacote java.net.HttpURLConnection. Isso facilitou o desenvolvimento de aplicativos que consomem serviços da web. Essa nova API traz:

 

1. Simplicidade de Uso: A nova API apresenta uma interface de programação mais simples e intuitiva em comparação com o HttpURLConnection. Ela utiliza uma abordagem baseada em métodos fluentes(Fluent Interface), que permitem o encadeamento das chamadas, facilitando a construção de solicitações e o processamento de respostas.

2.  Suporte Nativo a Requisições Assíncronas: A API oferece suporte nativo a chamadas assíncronas, permitindo que você faça solicitações HTTP de forma não bloqueante e aproveite os benefícios do processamento paralelo.

3. Manipulação de Cookies: facilita a manipulação de cookies em solicitações e respostas HTTP. Você pode facilmente adicionar, remover ou ler cookies com métodos simples e diretos.

4. Tratamento de Redirecionamentos Automáticos: lida automaticamente com redirecionamentos HTTP, seguindo as respostas de redirecionamento e fornecendo a resposta final após a conclusão do redirecionamento.

5.  Suporte a Protocolos Modernos: oferece suporte nativo a protocolos modernos como HTTP/2 e WebSocket, permitindo uma comunicação mais eficiente e otimizada com servidores.

6.  Extensibilidade: é projetada para ser extensível, permitindo que você adicione ou modifique facilmente recursos e comportamentos.

 

Segue um exemplo de uso do acesso ao endereço desse blog:

 

   private static void lendoURLcomJava11() {

           try {

                HttpRequest request = HttpRequest.newBuilder()

                     .GET()

                     .uri(URI.create("http://olamundo-java.blogspot.com"))

                     .build();

          

                HttpClient httpClient = HttpClient.newHttpClient();

               

                HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

               

                System.out.println(response.statusCode());

                System.out.println(response.body());

               

           }catch (Exception e) {

                e.printStackTrace();

           }

  }


Caso queira por exemplo fazer um POST em uma API REST poderia fazer da seguinte maneira:

 

   private static void fazendoPostParaRestApi() {    

        HttpClient httpClient = HttpClient.newBuilder()

                .build();

 

        // Construindo a URI da API REST

        String apiUrl = "https://api.example.com/data";

        URI uri = URI.create(apiUrl);

 

        // Criando o corpo da solicitação POST

        String requestBody = "{\"name\": \"John\", \"age\": 30}";

        HttpRequest httpRequest = HttpRequest.newBuilder()

                .uri(uri)

                .header("Content-Type", "application/json")

                .POST(BodyPublishers.ofString(requestBody))

                .build();

 

        try {

            // Enviando a solicitação

            HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());

 

            // Obtendo a resposta

            int statusCode = response.statusCode();

            String responseBody = response.body();

 

            // Exibindo a resposta

            System.out.println("Status Code: " + statusCode);

            System.out.println("Response Body: " + responseBody);

        } catch (Exception e) {

            e.printStackTrace();

        }

  }


Nenhum comentário:

Postar um comentário