Volley 1.1依赖于org.apache.http

时间:2018-06-05 17:10:46

标签: android android-volley

据我所知https://github.com/google/volley/wiki/Migrating-from-Apache-HTTP 排球1.1删除了对org.apache.http 的强制依赖。和

  

"大多数使用HurlStack或Volley#newRequestQueue的应用程序   minSdkVersion设置为9或更高不应该采取任何行动   除了删除useLibrary' org.apache.http.legacy' build.gradle文件中的声明(如果存在)。"

我没有在任何地方使用org.apache.http,但是当我尝试在单元测试中执行Volley.newRequestQueue(context.getApplicationContext())或新HurlStack()时,我得到:

java.lang.NoClassDefFoundError: org/apache/http/StatusLine

在运行时。检查HurlStack类我看到它继承自BaseHttpStack,它显然仍然依赖于org.apache.http

import org.apache.http.ProtocolVersion;
import org.apache.http.StatusLine;
import org.apache.http.entity.BasicHttpEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicHttpResponse;
import org.apache.http.message.BasicStatusLine;

所以,我没有得到它,如果使用api级别的凌空>我应该包括org.apache.http。 23或不?

解决方法:

如果我将它包含在build.gradle中,测试运行正常:

testImplementation "org.apache.httpcomponents:httpclient:4.5.5"

注意:

这不是关于NoClassDefFoundError的一般性问题,它特别针对Volley抛出此异常,当指令(阅读帖子上的链接)说它不应该。

1 个答案:

答案 0 :(得分:3)

在Android Pi(9)设备的Application标签的AndroidManifest文件中使用以下行

  <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />