Получение Failed разрешения: Lorg / apache / http / impl / nio / реактор / DefaultConnectingIOReactor При попытке реализовать Unirest API из RapidAPI - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь реализовать Spoonacular Api от RapidApi с Android.Он использует Unirest, поэтому я пытаюсь его настроить.По официальной документации я следую за разделом Without Maven.Я скачал самый unarst jar, и у меня они есть в моем build.gradle

    apply plugin: 'com.android.application'

    android {
             .......
        useLibrary  'org.apache.http.legacy'

        packagingOptions {
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/ASL2.0'
        }



    }

    dependencies {
        ......

        implementation 'com.rapidapi:rapidconnect-android:0.1'
        implementation files('libs/unirest-java-1.4.9.jar')

        implementation 'org.json:json:20171018'

        implementation('org.apache.httpcomponents:httpmime:4.3.6') {
            exclude module: 'httpclient'
        }
        implementation 'org.apache.httpcomponents:httpclient-android:4.3.5'


    }

    apply plugin: 'com.google.gms.google-services'

, и это мой код Java:

HttpResponse<JsonNode> response = null;
        try {
            response = Unirest.get("https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/recipes/findByIngredients?ingredients=egg%2Cyogurt&number=5&ranking=1")
                    .header("X-Mashape-Key", "keyyy")
                    .header("X-Mashape-Host", "spoonacular-recipe-food-nutrition-v1.p.mashape.com")
                    .asJson();
        } catch (UnirestException e) {
            e.printStackTrace();
        }

Я получаю эту ошибку:

09-19 11:53:19.674 6789-6789/com.example.hassen.androidpim E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.hassen.androidpim, PID: 6789
    java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/impl/nio/reactor/DefaultConnectingIOReactor;
        at com.mashape.unirest.http.options.Options.refresh(Options.java:85)
        at com.mashape.unirest.http.options.Options.<clinit>(Options.java:46)
        at com.mashape.unirest.http.options.Options.getOption(Options.java:42)

Не могли бы вы помочь мне разобраться, как это исправить?Спасибо

1 Ответ

0 голосов
/ 19 сентября 2018

Я полагаю, что вы пропустили одну из этих зависимостей Apache (httpasyncclient в вашем случае, я полагаю).

На самом деле три из них , как упомянуто документация :

  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>

  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpasyncclient</artifactId>

  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpmime</artifactId>

Итак, перейдите по этой ссылке, загрузите и добавьте файл jar вручную в свой проект:

http://hc.apache.org/downloads.cgi

И ищите: HttpAsyncClient.


Используйте это, чтобы добавить jar file-library внутри вашего проекта: Как добавить jar во Внешние библиотеки в androidстудия

...