1
resposta

HttpClient não imprime no console

Olá pessoal, estou com bastante dúvida. Estou fazendo um challenge e me parece que deveria ser simples enviar a requisição para uma API de filmes. Parece que é enviada com sucesso, mas por que esse código não imprime qualquer coisa??

public class IMBDinfo {

    public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {

        String apiKey = "xxxxxxx";

        HttpClient client = HttpClient.newHttpClient();        
        HttpRequest request = HttpRequest
                .newBuilder()
                .uri(new URI("https://imdb-api.com/en/API/Top250Movies/" + apiKey))
                .GET()
                .build();

        client.sendAsync(request, BodyHandlers.ofString())
          .thenApply(response -> { System.out.println(response.statusCode());
                                   return response; } )
          .thenApply(HttpResponse::body)
          .thenAccept(System.out::println);          


    }

}
1 resposta

Olá Caroline, tudo bem? Pelo código que você postou, parece que a requisição está sendo enviada com sucesso e a resposta está sendo tratada corretamente. O que pode estar acontecendo é que a resposta da API não está sendo impressa no console porque o método thenAccept está sendo usado para imprimir a resposta, mas não está sendo feito nenhum tratamento adicional com ela.

Uma solução seria armazenar a resposta em uma variável e depois imprimir essa variável no console. Por exemplo:

HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
String responseBody = response.body();
System.out.println(responseBody);

Espero ter ajudado e bons estudos!