背景:
android 6.0.1 的手机发现使用webdav下载文件实效,httpclient.execute get的时候出现:
CrashHandler: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at org.apache.http.impl.auth.DigestScheme.isGbaScheme(DigestScheme.java:210)
原来知道android 6.0系统的apache的httpclient已经不维护了,没想到问题来的如此之快。
两个方案:
1.使用系统的httpurlconnection,然后自己写鉴权。
2.升级apache的库。apache提供了专门支持android的库。
记录一下填坑的情况:
一开始总觉得用系统的肯定好么,然后就开始google之旅。
这是网上推荐的自己写的digest鉴权,https://gist.github.com/slightfoot/5624590
中间为了填guava的坑,各种google,修改guava的模式到标准模式,过程略过不提。
然而最后抓包发现结果是崩溃的。。。
md5加密出来的字段和原来的httpclient加密出来的字段是不一致的。然而偶还没有努力去学好webdav协议的觉悟,第一条路pass吧。
第二条路:
参见:
http://stackoverflow.com/questions/36262232/android-6-0-httpclient-issue-with-lg-g3-phone
10min搞定。。。。
暂时没有发现问题。