Попытка реализовать RapidApi на Android Studio - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь реализовать API словаря парных слов в Android Studio. Полученное сообщение об ошибке:

I/OkHttpClient: Callback failure for call to https://twinword-twinword-bundle-v1.p.rapidapi.com/...
    java.io.IOException: Unexpected code Response{protocol=http/1.1, code=403, message=Forbidden, url=https://twinword-twinword-bundle-v1.p.rapidapi.com/word_example/?entry=mask}
        at com.example.anew.SentenceFramer$1.onResponse(SentenceFramer.java:58)
        at com.squareup.okhttp.Call$AsyncCall.execute(Call.java:177)
        at com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:760)

Я считаю, что сообщение запрещено, потому что оно не может получить доступ к быстрому API, и я думаю, что проблема в том, что я не мог понять, что такое ключ проекта, так как я не мог найти его можно на сайте RapidAPI. Или проблема на самом деле заключается в моих кодах?

RapidApiConnect connect = new RapidApiConnect("I put my project name here", "I dont know where to find project key");
String object_1;

String host = "twinword-twinword-bundle-v1.p.rapidapi.com";
String API_KEY = "this is the api key";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sentence_framer);

    object_1 = getIntent().getStringExtra("First Object");
    Log.d("EDMTERROR", object_1);
    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder()
            .url("https://twinword-twinword-bundle-v1.p.rapidapi.com/word_example/?entry=mask")
            .get()
            .addHeader("x-rapidapi-host", host)
            .addHeader("x-rapidapi-key", API_KEY)
            .build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Request request, IOException e) {
            Log.d("EDMTERROR", "onfailure");
            e.printStackTrace();
        }

        @Override
        public void onResponse(Response response) throws IOException {
            Log.d("EDMTERROR", "masalah");

            try (ResponseBody responseBody = response.body()) {
                if (!response.isSuccessful()) {
                    Log.d("EDMTERROR", "unexpected code");
                    throw new IOException("Unexpected code " + response);
                }

                Headers responseHeaders = response.headers();
                Log.d("EDMTERROR", "headers");
                for (int i = 0, size = responseHeaders.size(); i < size; i++) {

                    System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
                }

                System.out.println(responseBody.string());
            }

Я делаю это впервые, поэтому у меня нет ни малейшего понятия, как это исправить. Веб-сайт, на который я пытаюсь попасть, - https://rapidapi.com/twinword/api/word-dictionary?endpoint=53aa5089e4b0a798dbd1a61d.

Пожалуйста, помогите, мне нужно это для моего проекта на последний год ...

1 Ответ

0 голосов
/ 15 января 2020

Похоже, вы еще не подписались на API на rapidapi.com (https://rapidapi.com/twinword/api/word-dictionary/pricing)

также, я не смог найти конечную точку, которую вы пытаетесь использовать ( /word_example), похоже, что конечной точкой является /example.

Вы всегда можете связаться с ними по номеру support@rapidapi.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...