尝试将文件(图像、音频)上传到 S3 时,我偶尔会遇到此异常。有什么解决办法吗?

配置:Android 4x、5x,aws-android-sdk-s3 版本 2.2.14。

Unable to execute HTTP request: Write error: ssl=0x9ab52680: I/O error during system call, Connection reset by peer
javax.net.ssl.SSLException: Write error: ssl=0x9ab52680: I/O error during system call, Connection reset by peer
    at com.android.org.conscrypt.NativeCrypto.SSL_write(Native Method)
    at com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:766)
    at com.android.okhttp.okio.Okio$1.write(Okio.java:76)
    at com.android.okhttp.okio.AsyncTimeout$1.write(AsyncTimeout.java:155)
    at com.android.okhttp.okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
    at com.android.okhttp.okio.RealBufferedSink.write(RealBufferedSink.java:46)
    at com.android.okhttp.internal.http.HttpConnection$FixedLengthSink.write(HttpConnection.java:302)
    at com.android.okhttp.okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
    at com.android.okhttp.okio.RealBufferedSink$1.write(RealBufferedSink.java:198)
    at com.amazonaws.http.UrlHttpClient.write(UrlHttpClient.java:172)
    at com.amazonaws.http.UrlHttpClient.writeContentToConnection(UrlHttpClient.java:129)
    at com.amazonaws.http.UrlHttpClient.execute(UrlHttpClient.java:65)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:360)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:199)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4221)
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1628)
    at net.tandem.ext.aws.AmazonUtil.uploadFile(AmazonUtil.java:131)
    at net.tandem.ext.aws.AmazonUtil.uploadFile(AmazonUtil.java:65)
    at net.tandem.service.MessageService$2.doInBackground(MessageService.java:323)
    at net.tandem.service.MessageService$2.doInBackground(MessageService.java:315)
    at android.os.AsyncTask$2.call(AsyncTask.java:295)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
    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)

最佳答案

解决方案是重试请求。

对端连接重置理论上是指远端服务器由于通信故障或内部错误而重置连接,但实际上,中间设备(特别是防火墙和 NAT/PAT 设备)也可以制作一个响应包来生成此连接同样的错误。

通常这虽然被解释为流量穿​​越互联网的结果——有时事情会出错,超出你的控制范围。

如果同一请求在其他请求成功时重复抛出错误,则此条件应仅表明您做错了(您可以纠正的事情)。

10-04 22:45
查看更多