loading...

Como fazer uma requisição GET de uma API REST em Java e transformar o JSON em um objeto

pcollares profile image Paulo Collares Originally published at paulocollares.com.br on ・2 min read

Como realizar uma simples leitura de uma API REST que disponibiliza um JSON como resposta de uma requisição GET.

Nossa única dependência será a biblioteca GSON do Google, para desserializar o JSON em um objeto Java.

Para nosso exemplo irei obter os dados de aeronaves disponibilizados por um serviço gratuito, o OpenSky, a documentação de sua API pode ser encontrada aqui: https://opensky-network.org/apidoc/rest.html

Primeiramente vamos criar uma classe com os mesmos campos e tepos da resposta JSON da API que será consultada:

Dados.java

public class Dados {

        private String time;
        private String[][] states;

        public String getTime() {
            return time;
        }

        public void setTime(String time) {
            this.time = time;
        }

        public String[][] getStates() {
            return states;
        }

        public void setStates(String[][] states) {
            this.states = states;
        }

    }

Agora, nossa classe principal, onde é feita uma requisição HTTP da url definida e seu conteúdo é lido pelo BufferedReader.

Depois simplesmente passo o conteúdo JSON para a biblioteca GSON, onde irá desserializar no objeto ‘Dados’.

Main.java

public class APIRest {

    public static void main(String[] args) {
        try {
            String url = "https://opensky-network.org/api/states/all?lamin=45.8389&lomin=5.9962&lamax=47.8229&lomax=10.5226";

            HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();

            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            if (conn.getResponseCode() != 200) {
                System.out.println("Erro " + conn.getResponseCode() + " ao obter dados da URL " + url);
            }

            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

            String output = "";
            String line;
            while ((line = br.readLine()) != null) {
                output += line;
            }

            conn.disconnect();

            Gson gson = new Gson();
            Dados dados = gson.fromJson(new String(output.getBytes()), Dados.class);

            System.out.println("TIME: " + dados.getTime());
            System.out.println("STATES: " + Arrays.toString(dados.getStates()[0]));

        } catch (IOException ex) {
            Logger.getLogger(APIRest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

A saída será algo assim:

TIME: 1559738039
STATES: [3c6671, DLH1153 , Germany, 1559738039, 1559738039, 6.6706, 46.3694, 10363.2, false, 259.33, 5.24, 0.33, null, 10599.42, 5507, false, 0]

[]’s

Discussion

pic
Editor guide