aliyun / aliyun-oss-android-sdk

Android SDK for aliyun object storage service
807 stars 306 forks source link

异步上传时上传失败没有回调 #156

Open Garment-Lee opened 5 years ago

Garment-Lee commented 5 years ago

使用asyncPutObject()接口进行文件上传。1)当手机使用的wifi热点是没有网络的,调用上传接口之后,onFailure()不会被回调,也没有其他打印信息。2)直接关闭所有的网络,调用上传接口之后,onFailure()也不会被回调,但是会打印UnknownHostException的信息。

Garment-Lee commented 5 years ago

补充一下:使用的是最新版2.9.2 。

Garment-Lee commented 5 years ago

这是捕获到的异常信息:‘ 03-07 18:05:24.107 8347-10426/com.build.scan.route W/System.err: java.net.ConnectException: Failed to connect to /120.77.166.194:80 at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247) at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall.execute(RealCall.java:77) at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:177) at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:44) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.net.ConnectException: failed to connect to /120.77.166.194 (port 80) after 60000ms: connect failed: ENETUNREACH (Network is unreachable) 03-07 18:05:24.108 8347-10426/com.build.scan.route W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:502) at java.net.Socket.connect(Socket.java:884) at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:73) at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245) ... 23 more Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable) 03-07 18:05:24.109 8347-10426/com.build.scan.route W/System.err: at libcore.io.Posix.connect(Native Method) at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) at libcore.io.IoBridge.connectErrno(IoBridge.java:154) at libcore.io.IoBridge.connect(IoBridge.java:122) ... 28 more

1019272778 commented 5 years ago

我用线上 https://github.com/aliyun/aliyun-oss-android-sdk/tree/master/app测试。2.9.2版本。在无网络状态下是流程正常。你可以用这个地址的代码试一下吗

Garment-Lee commented 5 years ago

我用线上 https://github.com/aliyun/aliyun-oss-android-sdk/tree/master/app测试。2.9.2版本。在无网络状态下是流程正常。你可以用这个地址的代码试一下吗?

还是不行,这是我最新捕捉到的异常: 03-13 17:55:15.196 1444-1510/com.garment.androiddevfunctesttool W/System.err: java.net.ConnectException: Failed to connect to /120.77.166.194:80 at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247) at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 03-13 17:55:15.197 1444-1510/com.garment.androiddevfunctesttool W/System.err: at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall.execute(RealCall.java:77) at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:177) at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:44) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.net.ConnectException: failed to connect to /120.77.166.194 (port 80) after 60000ms: connect failed: ENETUNREACH (Network is unreachable) at libcore.io.IoBridge.connect(IoBridge.java:124) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:502) at java.net.Socket.connect(Socket.java:884) at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:73) at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245) ... 23 more Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable) 03-13 17:55:15.198 1444-1510/com.garment.androiddevfunctesttool W/System.err: at libcore.io.Posix.connect(Native Method) at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) at libcore.io.IoBridge.connectErrno(IoBridge.java:154) at libcore.io.IoBridge.connect(IoBridge.java:122) ... 28 more 03-13 17:55:15.617 1444-1510/com.garment.androiddevfunctesttool W/System.err: java.net.ConnectException: Failed to connect to /120.77.166.194:80 at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247) at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) 03-13 17:55:15.618 1444-1510/com.garment.androiddevfunctesttool W/System.err: at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall.execute(RealCall.java:77) at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:177) at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:239) at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:44) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.net.ConnectException: failed to connect to /120.77.166.194 (port 80) after 60000ms: connect failed: ENETUNREACH (Network is unreachable) 03-13 17:55:15.619 1444-1510/com.garment.androiddevfunctesttool W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:502) at java.net.Socket.connect(Socket.java:884) at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:73) at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245) ... 24 more Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable) 03-13 17:55:15.620 1444-1510/com.garment.androiddevfunctesttool W/System.err: at libcore.io.Posix.connect(Native Method) at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) at libcore.io.IoBridge.connectErrno(IoBridge.java:154) at libcore.io.IoBridge.connect(IoBridge.java:122) ... 29 more

Garment-Lee commented 5 years ago

手机断开移动网络和WiFi,调用asyncResumableUpload()接口上传文件,没有回调onFailure(),但是系统会报出以上异常。

lyzhchc commented 3 years ago

我也遇到该问题了,我使用sdk版本2.3.0以及2.9.5都有同样的问题: Caused by: java.net.SocketTimeoutException: failed to connect to /47.110.23.37 (port 80) after 60000ms 02-24 03:18:20.428 W/System.err( 2040): at libcore.io.IoBridge.connectErrno(IoBridge.java:169) 02-24 03:18:20.428 W/System.err( 2040): at libcore.io.IoBridge.connect(IoBridge.java:122) 02-24 03:18:20.428 W/System.err( 2040): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 02-24 03:18:20.428 W/System.err( 2040): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452) 02-24 03:18:20.428 W/System.err( 2040): at java.net.Socket.connect(Socket.java:884) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:61) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:187) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.connection.RealConnection.buildConnection(RealConnection.java:173) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:114) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:193) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:129) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:98) 02-24 03:18:20.428 W/System.err( 2040): at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:170) 02-24 03:18:20.429 W/System.err( 2040): at okhttp3.RealCall.execute(RealCall.java:60) 02-24 03:18:20.429 W/System.err( 2040): at com.alibaba.sdk.android.oss.network.OSSRequestTask.call(OSSRequestTask.java:181) 02-24 03:18:20.429 W/System.err( 2040): ... 7 more