【发布时间】:2015-12-15 10:33:13
【问题描述】:
我正在使用 MF 6.3 开发一个混合应用程序。当我通过请求数据时,我遇到了 java 套接字超时问题 适配器。这并不一致。它发生 3-4/10 次。我也有 看到github中提到的相同问题 https://github.com/google/google-http-java-client/issues/146 但有 没有解决方案。
我使用的是 60 秒的适配器超时,而这个异常发生在 10 秒内。
为日志附加 logcat。
09-18 15:07:29.561: I/System.out(10667): pool-6-thread-2 调用 分离()
09-18 15:07:39.146: I/System.out(10667): pool-6-thread-5 调用 分离()
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667): WLNativeXHRPlugin$NativeXHRPostListener.onException 在 WLNativeXHRPlugin.java:154 :: onException
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667): java.net.SocketTimeoutException: 读取超时
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:728)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.client.DefaultRequestDirector.executeOriginal(DefaultRequestDirector.java:1351)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:700)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:691)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:514)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 com.worklight.wlclient.WLHybridRequestSender.run(WLHybridRequestSender.java:63)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-18 15:07:39.166: E/com.worklight.androidgap.plugin.WLNativeXHRPlugin(10667):在 java.lang.Thread.run(Thread.java:818)
09-18 15:07:39.176: E/NONE(10667): [/apps/services/api/SCBBizNet/android/query] 主机没有响应。 尝试通过android模拟器浏览器手动访问URL 验证连接性。
【问题讨论】:
-
适配器请求去哪儿了?
-
我正在通过适配器调用 java web 服务,返回 json 格式的结果。
-
使用 Wireshark 从成功和失败尝试中收集网络流量日志。让我们看看网络告诉我们什么。
-
该场景仅适用于移动设备。我正在使用三星 Galaxy S4。这种情况下该如何处理?
-
按照指示。在安装服务器的主机上安装 Wireshark,并观察您使用的特定端口在失败和成功期间的网络流量。
标签: android exception timeout ibm-mobilefirst