首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OkHttp android 5崩溃adcolony和helpshift

OkHttp android 5崩溃adcolony和helpshift
EN

Stack Overflow用户
提问于 2016-06-22 08:03:49
回答 1查看 219关注 0票数 1

仅在android 5上,一些第三方sdks (adcolony和helpshift)就会随机崩溃(大多数情况下,应用程序刚刚启动)。在下面的android 5上,两者都工作得很好。

他们俩都撞上了

com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:329) com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:324)

帮助移位崩溃堆栈跟踪:

尝试在空对象引用com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:329) com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:324) com.android.okhttp.internal.http.JavaApiConverter.createOkResponse(JavaApiConverter.java:116) com.android.okhttp.internal.http.ResponseCacheAdapter.get(ResponseCacheAdapter.java:53上调用接口方法“java.lang.Object java.util.Map.get(java.lang.Object)”) com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:190) com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373) com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323) com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:491) com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25) HttpsURLConnectionImpl.java:25 java.lang.Thread.run(Thread.java:818)

广告群崩溃堆栈跟踪:

尝试在空对象引用com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:329) com.android.okhttp.internal.http.JavaApiConverter.extractStatusLine(JavaApiConverter.java:324) com.android.okhttp.internal.http.JavaApiConverter.createOkResponse(JavaApiConverter.java:116) com.android.okhttp.internal.http.ResponseCacheAdapter.get(ResponseCacheAdapter.java:53上调用接口方法“java.lang.Object java.util.Map.get(java.lang.Object)”) com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:269) com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373) com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106) com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:208) com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) com.android.okhttp.internal.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:25) HttpsURLConnectionImpl.java:25 at java.lang.Thread.run(Thread.java:818)

有人知道怎么解决吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-17 17:43:19

您提到的NPE似乎是类似的,在Android5.0的okhttp发布线程中报告的:http://code.google.com/p/android/issues/detail?id=160522

引发此问题的可能原因:

您可能正在使用自定义ResponseCache /第三方ResponseCache,而且它没有正确实现,而且okhttp没有正确处理空响应。

1.如果不需要响应缓存

此NPE的快速修复方法是禁用连接上的缓存。

conn.setUseCaches(false)

2.如果您需要响应缓存

您所使用的ResponseCache的实现是什么?是android.net.http.HttpResponseCache的安卓,还是第三方的?

自定义ResponseCache问题的根本原因

根本原因是Android假设状态行(例如,指示响应代码的响应部分,消息)被保存为带有空键的标头。当您查看索引为零的标头时,会在API文档中提到这一点,但是在返回Map的方法中,或者在接受字符串的方法中,这是不明确的。 见此处:http://developer.android.com/reference/java/net/CacheResponse.html#getHeaders()

从您提供的堆栈跟踪来看,问题似乎与使用自定义ResponseCache有关。如果是的话,您可以禁用缓存(如果不需要的话),否则您可以联系自定义响应缓存的维护人员,如上面关于okhttp问题的response中所提到的。

对于任何其他与Helpshift相关的查询,请访问support@helpshift.com与我们联系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37962051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档