2
respostas

[Dúvida] Esta dando uma exceção

Ola, eu fiz meu código e vi que estava dando erro, então assisti a aula e fiz como a professora indicou, porem a exceção persiste. Não estou conseguindo resolver.MAIN:

import com.br.buscarcep.modelo.CepRecord;
import com.br.buscarcep.requisicoes.RequisicaoHttp;

import java.io.IOException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitor = new Scanner(System.in);

       // System.out.println("Digite o cep: ");
        //String cep = leitor.nextLine();

        RequisicaoHttp requisicao = new RequisicaoHttp();
        CepRecord cepRecord = requisicao.requisicao("88058647");

        System.out.println(cepRecord);
        leitor.close();
    }
}

RECORD:

package com.br.buscarcep.modelo;

public record CepRecord(String cep, String logradouro, String bairro, String localidade) {
}

BUSCARCEP:

package com.br.buscarcep.requisicoes;

import com.br.buscarcep.modelo.CepRecord;
import com.google.gson.Gson;

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 RequisicaoHttp {
    public CepRecord requisicao(String cep) throws IOException, InterruptedException {
        URI endereco = URI.create("viacep.com.br/ws/"+cep+"/json");

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(endereco)
                .build();

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

        return new Gson().fromJson(response.body(), CepRecord.class);

    }
}
2 respostas

Olá Carlos, tudo bem? Pelo código que você postou, parece que o problema está na URI que você está criando na classe RequisicaoHttp. O endereço que você está usando não está completo, faltando o "http://" no começo. Tente alterar a linha em que você cria a URI para:

URI endereco = URI.create("http://viacep.com.br/ws/"+cep+"/json");

Dessa forma, acredito que a exceção que está ocorrendo será resolvida. Espero ter ajudado e bons estudos!

Fala, brow!

como a classe RequisicaoHttp faz uso da API HttpClient, é necessário certificar-se de que o projeto está usando a versão adequada do Java para suportar essa API. O HttpClient foi introduzido no Java 11, então é necessário ter o JDK 11 ou superior instalado e configurado corretamente para que o projeto possa ser compilado e executado com sucesso.

Além disso, a URI criada na classe RequisicaoHttp parece estar incorreta. É necessário incluir "http://" ou "https://" antes do endereço "viacep.com.br/ws/" para que a URI possa ser resolvida corretamente. Portanto, a URI correta deve ser "http://viacep.com.br/ws/"+cep+"/json" ou "https://viacep.com.br/ws/"+cep+"/json".

Por fim, se os passos acima não funcionarem , o erro pode estar ocorrendo então porque o código-fonte da classe CepRecord não está sendo encontrado durante a compilação da classe Main. Para corrigir esse erro, garanta que a classe CepRecord está sendo compilada e está presente no classpath do projeto. Isso pode ser feito verificando se o arquivo .java que contém a classe CepRecord está presente no diretório correto e que o pacote no qual a classe está definida está sendo importado corretamente no arquivo Main.java.

Flw!