Как я могу решить ошибку 403 при использовании Apache Commons IO?

Я пытаюсь получить код JSON из URL-адреса с библиотекой GSON, и я использую Apache Commons IO для получения URL-адреса. Но проблема в том, что когда я выполняю код, выход возвращает ошибку 403. Как я могу решить эту проблему? Вот код:

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.commons.io.IOUtils;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class gsonexample {

    public gsonexample() throws MalformedURLException, IOException {
        String url = "http://freemusicarchive.org/api/get/albums.json?api_key=60BLHNQCAOUFPIBZ&limit=5";
        String json = IOUtils.toString(new URL(url));
        JsonParser parser = new JsonParser();
        // The JsonElement is the root node. It can be an object, array, null or
        // java primitive.
        JsonElement element = parser.parse(json);
        // use the isxxx methods to find out the type of jsonelement. In our
        // example we know that the root object is the Albums object and
        // contains an array of dataset objects
        if (element.isJsonObject()) {
            JsonObject albums = element.getAsJsonObject();
            System.out.println(albums.get("title").getAsString());
            JsonArray datasets = albums.getAsJsonArray("dataset");
            for (int i = 0; i < datasets.size(); i++) {
                JsonObject dataset = datasets.get(i).getAsJsonObject();
                System.out.println(dataset.get("album_title").getAsString());
            }
        }

    }
}

А вот и выход:

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://freemusicarchive.org/api/get/albums.json?api_key=60BLHNQCAOUFPIBZ&limit=5
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
    at java.net.URL.openStream(URL.java:1045)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:1153)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:1140)
    at gestor.de.colecciones.gsonexample.<init>(gsonexample.java:24)
    at gestor.de.colecciones.main.main(main.java:62)
    ... 11 more
Exception running application gestor.de.colecciones.main
Java Result: 1

gsonexample.java:24 is String json = IOUtils.toString (новый URL(URL));

1 ответ

У меня та же проблема, и я нашел ваш вопрос.

Один из комментариев говорит, чтобы использовать

System.setProperty("http.agent", "curl/7.51.0"). 

Я так и сделал, и все еще получил ту же ошибку. Поэтому я скопировал и вставил URL-адрес в вашем коде (который был точно таким же, как мой) в адресную строку браузера и нажал клавишу ВВОД. Ответ был:

{"title":"Free Music Archive - Albums","message":"","errors":["invalid or disabled api_key"],"http_status":403,"dataset":[]}. 

Надеюсь это поможет. Предложите нам обоим изучить freemusicarchive.com, чтобы найти действующий и / или не заблокированный ключ.

Удачи и счастливых вычислений.

Другие вопросы по тегам