Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Clase Api 1

bueno el codigo me funciono, escribi Grease y arroja el Json, tambien algo sucede Al usar ñ, escribi Señor de los Anillos y dio error

package com.alura.screenmatch.principal;

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 PrincipalConBusqueda {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner lectura = new Scanner(System.in);
        System.out.println("Escriba el nombre de una pelicula: ");
        var busqueda = lectura.nextLine();

        String clave = "a4da2fe9";
        String direccion = "https://www.omdbapi.com/?t="+busqueda+"&apikey="+clave;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(direccion))
                .build();
        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
1 respuesta

Hola Julieta, espero que estés bien

¡Qué bueno que tu código está funcionando en general! El problema que estás enfrentando con el uso de la "ñ" se debe a cómo los caracteres especiales son manejados en las URLs. Cuando envías una solicitud HTTP, los caracteres especiales, como la "ñ", deben ser codificados para que el servidor los interprete correctamente.

Para solucionar este problema, puedes usar la clase URLEncoder de Java para codificar el nombre de la película antes de añadirlo a la URL. Aquí te dejo un ejemplo de cómo podrías modificar tu código:

import java.io.IOException;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class PrincipalConBusqueda {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner lectura = new Scanner(System.in);
        System.out.println("Escriba el nombre de una pelicula: ");
        var busqueda = lectura.nextLine();

        // Codificar el nombre de la película
        String busquedaCodificada = URLEncoder.encode(busqueda, StandardCharsets.UTF_8);

        String clave = "a4da2fe9";
        String direccion = "https://www.omdbapi.com/?t=" + busquedaCodificada + "&apikey=" + clave;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(direccion))
                .build();
        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}

Con este cambio, deberías poder buscar películas con caracteres especiales sin problemas.

Espero que esta solución te sea útil y que puedas continuar avanzando en tu aprendizaje. ¡Espero haber ayudado y buenos estudios!