获取失败解决方案:Lorg/apache/http/impl/nio/reactor/DefaultConnectingIOReactor 尝试从 RapidAPI 实施 Unirest API 时
Getting Failed resolution of: Lorg/apache/http/impl/nio/reactor/DefaultConnectingIOReactor When trying to implement a Unirest API from RapidAPI
我正在尝试使用 Android 从 RapidApi 实现 Spoonacular Api。它使用 Unirest,所以我正在尝试配置它。在 official documentation 上,我正在关注 Without Maven
部分。我下载了 unirest 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)
你能帮我弄清楚如何解决这个问题吗?
谢谢
我相信你错过了其中一个 Apache 依赖项(我想你的情况是 httpasyncclient
)。
the documentation提到的三个:
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
因此,转到此 link 下载并在您的项目中手动添加 jar 文件:
http://hc.apache.org/downloads.cgi
并寻找:HttpAsyncClient
.
使用它在您的项目中添加 jar
文件库:How to add a jar in External Libraries in android studio
我正在尝试使用 Android 从 RapidApi 实现 Spoonacular Api。它使用 Unirest,所以我正在尝试配置它。在 official documentation 上,我正在关注 Without Maven
部分。我下载了 unirest 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)
你能帮我弄清楚如何解决这个问题吗? 谢谢
我相信你错过了其中一个 Apache 依赖项(我想你的情况是 httpasyncclient
)。
the documentation提到的三个:
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
因此,转到此 link 下载并在您的项目中手动添加 jar 文件:
http://hc.apache.org/downloads.cgi
并寻找:HttpAsyncClient
.
使用它在您的项目中添加 jar
文件库:How to add a jar in External Libraries in android studio