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\":
\"Daniel\", \"Idade\": 34}";
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