1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como resolver o erro "403 for URL" na conexão com API que usa GraphQL? (Anilist API v2)

Agradeço desde já pela ajuda!

Estou trabalhando em um projeto que exige que eu utilize o Anilist API v2, que usa GraphQL... Após mexer incontáveis vezes, sempre acabo com uma solicitação que retorna um erro 403 "Server returned HTTP response code: 403 for URL: https://graphql.anilist.co/".

Devido a esse problema não consigo fazer nenhum avanço, caso alguém saiba apontar meu erro no algoritmo ficarei muito agradecido.

Abaixo está o meu código:

package apiAnilist;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class Home {
    private static String endpoint = "https://graphql.anilist.co";
    String query = "query{"+
                       "Media(search: "+"naruto"+", type: ANIME) {"+
                          "id"+
                           " title {"+
                              "romaji"+
                              "english"+
                              "native"+
                            "}"+
                          "}"+
                        "}";
    private static Home instance;

    private Home() {
        anilist();
    }

    public static Home getInstance() {
        if(instance == null)
            instance = new Home();    

        return instance;
    }

    private String anilist() {
        try {
            String json = "{\"query\":\"";
            json += query;
            json += "\"}";

            json = json.replace("\n", " ").replace("  ", " ");
            URL url = new URL(endpoint);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.addRequestProperty("Accept", "application/json");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");

            OutputStream os = conn.getOutputStream();
            os.write(json.getBytes("UTF-8"));
            os.close();

            // read the response
            InputStream in = new BufferedInputStream(conn.getInputStream());
            String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");

            in.close();
            conn.disconnect();
            return result;
        } catch (Exception exp) {
            System.out.println("exception TRIGGERED");
            System.out.println(exp.getLocalizedMessage());
            return "";
        }
    }
}

Além disso estou testando a query neste site aqui.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java api ou faça a sua própria pergunta.