1
resposta

Erro "Id ou nome do abrigoService não encontado!"

Fala professor tudo certo ? Então como o título sugere, estou tendo erros na hora de listar o abrigo com o nome dos Pets.

Estou utilizando a IDE do Spring e notei que o arquivo "pets.csv" não abre exibindo os dados embutidos no mesmo.

Após fazer a referência ao arquivo CSV, o Scanner retorna a mensagem do else-if no PetService "Id ou nome do abrigoService não encontado!", talvez pelo erro na abertura do arquivo.

PetService

package br.com.alura.service;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.http.HttpResponse;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

import com.fasterxml.jackson.databind.ObjectMapper;

import br.com.alura.client.ClientHttpConfiguration;

import br.com.alura.domain.Pet;

public class PetService {

    private ClientHttpConfiguration client;

    public PetService(ClientHttpConfiguration client) {
        this.client = client;
    }

    @SuppressWarnings("resource")
    public void listarPetsDoabrigoService() throws IOException, InterruptedException {
        System.out.println("Digite o id ou nome do abrigoService:");
        String idOuNome = new Scanner(System.in).nextLine();

        String uri = "http://localhost:8080/abrigoServices/" + idOuNome + "/pets";
        HttpResponse<String> response = client.dispararRequisicaoGet(uri);

        int statusCode = response.statusCode();
        if (statusCode == 404 || statusCode == 500) {
            System.out.println("ID ou nome não cadastrado!");

        }
        String responseBody = response.body();
        
        Pet[] pets = new ObjectMapper().readValue(responseBody, Pet[].class); //Convertendo pets para Json com a lib jackson-databind
        List<Pet> petList = Arrays.stream(pets).toList();
        System.out.println("Pets cadastrados:");
        for (Pet pet : petList) {

            long id = pet.getId();
            String tipo = pet.getTipo();
            String nome = pet.getNome();
            String raca = pet.getRaca();
            int idade = pet.getIdade();
            System.out.println(id + " - " + tipo + " - " + nome + " - " + raca + " - " + idade + " ano(s)");
        }
    }

    @SuppressWarnings("resource")
    public void importarPetsDoabrigoService() throws IOException, InterruptedException {
        System.out.println("Digite o id ou nome do abrigoService:");
        String idOuNome = new Scanner(System.in).nextLine();

        System.out.println("Digite o nome do arquivo CSV:");
        String nomeArquivo = new Scanner(System.in).nextLine();

        // LEITURA DO ARQUIVO
        BufferedReader reader = null; // inicializando a variavel para o reader compilar
        try {
            reader = new BufferedReader(new FileReader(nomeArquivo));
        } catch (IOException e) {
            System.out.println("Erro ao carregar o arquivo: " + nomeArquivo);

        }
        String line;
        while ((line = reader.readLine()) != null) {
            String[] campos = line.split(",");
            String tipo = campos[0];
            String nome = campos[1];
            String raca = campos[2];
            int idade = Integer.parseInt(campos[3]);
            String cor = campos[4];
            Float peso = Float.parseFloat(campos[5]);


            Pet pet = new Pet(tipo, nome, raca, idade, cor, peso);

            String uri = "http://localhost:8080/abrigoServices/" + idOuNome + "/pets";
            HttpResponse<String> response = client.dispararRequisicaoPost(uri, pet);
            int statusCode = response.statusCode();
            String responseBody = response.body();
            if (statusCode == 200) {
                System.out.println("Pet cadastrado com sucesso: " + nome);
            } else if (statusCode == 404) {
                System.out.println("Id ou nome do abrigoService não encontado!");
                break;
            } else if (statusCode == 400 || statusCode == 500) {
                System.out.println("Erro ao cadastrar o pet: " + nome);
                System.out.println(responseBody);
                break;
            }
        }
        reader.close();
    }

}

Abstração da classe Pet (O tipo dos dados são os mesmos esperados pelo servidor):

package br.com.alura.domain;

public class Pet {

    private Long id;
    private String tipo;
    private String nome;
    private String raca;
    private int idade;
    private String cor;
    private Float peso;
    
    public Pet() {}

    public Pet(String tipo, String nome, String raca, int idade, String cor, Float peso) {

        this.tipo = tipo;
        this.nome = nome;
        this.raca = raca;
        this.idade = idade;
        this.cor = cor;
        this.peso = peso;
    }

    public Long getId() {
        return id;
    }

    public String getTipo() {
        return tipo;
    }

    public String getNome() {
        return nome;
    }

    public String getRaca() {
        return raca;
    }

    public int getIdade() {
        return idade;
    }

    public Float getPeso() {
        return peso;
    }
    
    public String getCor() {
        return cor;
    }
    

}
1 resposta

Olá, Pedro! Tudo bem com você.

Isso geralmente acontece quando o servidor não consegue encontrar o recurso solicitado, que neste caso é o "abrigoService" com o id ou nome fornecido.

Se o id ou nome estiver correto, o problema pode estar na URL que você está usando para fazer a requisição GET. Verifique se a URL está correta e se a API do projeto está rodando corretamente.

Quanto ao problema com o arquivo "pets.csv", parece que o programa não está conseguindo encontrar ou abrir o arquivo. Verifique se o nome do arquivo está correto e se ele está no local esperado pelo programa. Se o arquivo estiver em um diretório diferente do diretório do projeto, você precisará fornecer o caminho completo para o arquivo.

Caso os pontos que comentei não resolvam o seu problema, peço que compartilhe todo o seu projeto, via GitHub ou Drive do Google. Assim, conseguirei entender melhor a sua situação.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.