1
resposta

[Dúvida] Utilizando APIs + Dúvida

**EXERCICIO 1 **

import java.util.Scanner;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Principal {
    public static void main(String[] args) throws IOException, InterruptedException {
     Scanner sc = new Scanner(System.in);
     String titulo, chave ="MINHACHAVE"
        System.out.println("Qual livro você gostaria de ler?: ");
        titulo = sc.nextLine();
        
        String endereco = "https://www.googleapis.com/books/v1/volumes?q=" +titulo+ "&key="+chave;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder().uri(URI.create(endereco)).build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
    
    
}E

Algo que notei, é que não dá para realizar a pesquisa incluindo espaço entre as palavras, pois a API não lê. Considerando um projeto real, num app de biblioteca caso quisessemos pesquisar o título completo, como fariamos para o código ler o espaço entre as palavras do título?

EXERCICIO 2

import java.util.Scanner;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Principal {
    public static void main(String[] args) throws IOException, InterruptedException {
     Scanner sc = new Scanner(System.in);
     String moedaAtual, moedaConvertida, chave ="CG-VBk2MimaGoEzAgFRyQVfQ9n8";
        System.out.println("Qual valor você gostaria de converter?: ");
        moedaAtual = sc.nextLine();
        System.out.println("Gostaria de converter " +moedaAtual+ " para qual moeda?: ");
        moedaConvertida = sc.nextLine();
        String endereco = "https://api.coingecko.com/api/v3/simple/price?vs_currencies=" +moedaAtual+ "&ids="+moedaConvertida+"&x_cg_demo_api_key="+chave;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request;
        request = HttpRequest.newBuilder().uri(URI.create(endereco)).build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
    
    
}
1 resposta

Olá, boa tarde!

Quando vamos utilizar duas ou mais palavras para formar um parâmetro de pesquisa, eles são separados por espaços dependendo da forma que a API usa.
Posso te dar como exemplo a API do OMDB que concatena as duas palavras com o símbolo de adição, exemplo: http://www.omdbapi.com/?t=teen+wolf.
No Java você deve dar um replace onde tem espaço e colocar o símbolo de separação, neste caso, '+'.

Você pode fazer assim:

System.out.println("Qual livro você gostaria de ler?: ");
titulo = sc.nextLine();
titulo.replace(' ', '+');

Retirado da documentação o exemplo de como a URL tem que ficar:
https://www.googleapis.com/books/v1/volumes?q=harry+potter&callback=handleResponse