Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

me pueden apoyar con obtener el valor de la moneda ingresada

Este es el codigo

URL original https://v6.exchangerate-api.com/v6/85cb37c283fc71d11ca21787/latest/USD" en lugar de USD quiero ingresar la consulta del Scanner lectura_moneda = new Scanner(System.in);

codigo import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.Scanner;

import com.google.gson.JsonObject; import com.google.gson.JsonParser; import static java.net.http.HttpClient.newHttpClient;

public class ExchangeRateClient { public static void main(String[] args) throws IOException, InterruptedException { //leer datos que el usuario ingresa

    Scanner lectura_moneda = new Scanner(System.in);
    System.out.println("Ingrese moneda a consultar");
    var moneda = lectura_moneda.nextLine();
    String valor_moneda = "https://v6.exchangerate-api.com"+moneda+"/v6/85cb37c283fc71d11ca21787/latest/";

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

}

//Errores Ingrese moneda a consultar: "AFN" Exception in thread "main" java.lang.IllegalArgumentException: URI with undefined scheme at java.net.http/jdk.internal.net.http.common.Utils.newIAE(Utils.java:378) at java.net.http/jdk.internal.net.http.HttpRequestBuilderImpl.checkURI(HttpRequestBuilderImpl.java:79) at java.net.http/jdk.internal.net.http.HttpRequestBuilderImpl.uri(HttpRequestBuilderImpl.java:71) at java.net.http/jdk.internal.net.http.HttpRequestBuilderImpl.uri(HttpRequestBuilderImpl.java:43) at ExchangeRateClient.main(ExchangeRateClient.java:23)

2 respuestas

¡Hola Luis!

Parece que estás teniendo un problema al obtener el valor de la moneda ingresada a través de la API de tipo de cambio. El error que estás viendo se debe a que estás construyendo incorrectamente la URL para hacer la solicitud a la API.

En tu código, estás concatenando la variable moneda directamente a la URL de la API, lo cual no es correcto. Debes construir la URL completa de la API con la moneda ingresada por el usuario. Aquí te muestro cómo podrías corregir esa parte de tu código:

String valor_moneda = "https://v6.exchangerate-api.com/v6/85cb37c283fc71d11ca21787/latest/" + moneda;

Al hacer este cambio, la URL completa se construirá correctamente y podrás realizar la solicitud a la API de tipo de cambio con la moneda ingresada por el usuario.

Espero que esta corrección te ayude a solucionar el problema. ¡Buena suerte con tu proyecto!

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Gracias, ya realice el cambio y ya obtengo los valores

import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.Scanner;

public class ExchangeRateClient { public static void main(String[] args) throws IOException, InterruptedException { //leer datos que el usuario ingresa

    Scanner lectura_moneda = new Scanner(System.in);
    System.out.println("Ingrese moneda a consultar:");
    var moneda = lectura_moneda.nextLine();
    //String valor_moneda = "https://v6.exchangerate-api.com/v6/85cb37c283fc71d11ca21787/latest/";

    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request= HttpRequest.newBuilder()
    .uri(URI.create("https://v6.exchangerate-api.com/v6/85cb37c283fc71d11ca21787/latest/"+moneda))
    .build();
HttpResponse<String> response = client
        .send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.body());
}

} //

Respuesta C:\Users\luiss.jdks\openjdk-22\bin\java.exe "-javaagent:D:\IntelliJ IDEA Community Edition 2024.1\lib\idea_rt.jar=55457:D:\IntelliJ IDEA Community Edition 2024.1\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\java\ejercicio\Conversor_de_moneda\out\production\Conversor_de_moneda;C:\Users\luiss\Downloads\gson-2.10.1.jar ExchangeRateClient Ingrese moneda a consultar: AED { "result":"success", "documentation":"https://www.exchangerate-api.com/docs", "terms_of_use":"https://www.exchangerate-api.com/terms", "time_last_update_unix":1717459202, "time_last_update_utc":"Tue, 04 Jun 2024 00:00:02 +0000", "time_next_update_unix":1717545602, "time_next_update_utc":"Wed, 05 Jun 2024 00:00:02 +0000", "base_code":"AED", "conversion_rates":{ "AED":1, "AFN":19.4129, "ALL":25.2623, "AMD":105.5704, "ANG":0.4874, "AOA":234.9760, "ARS":235.4663, "AUD":0.4078, "AWG":0.4874, "AZN":0.4631,