开发者社区 问答 正文

I/O error during system call,Connection reset by peer android4.2集成oss 上传下载失败

com.alibaba.sdk.android.oss.ClentException:

   SSL handshake aborted:ssl=0x64e9f958: I/Oerror during system call,Connection reset by peer

集成阿里云oss SDk后,Android上传下载功能一直没有问题,昨天Android系统4.2手机上传下载失败,报上边错误

展开
收起
晨风雨 2018-08-01 14:24:40 7362 分享 版权
阿里云 AI 助理回答

遇到这个错误提示,通常意味着在进行SSL握手过程中出现了问题,导致连接被重置。这可能是由多种原因引起的,包括但不限于网络问题、SSL证书不被信任、客户端或服务器的SSL配置问题等。针对你的情况,可以尝试以下几个解决方案:

  1. 更新SDK版本:确保你使用的阿里云OSS SDK是最新版本。新版本可能已经修复了已知的兼容性问题。

  2. 检查网络环境:由于这个问题出现在特定的Android 4.2设备上,可能与该设备的网络环境有关。尝试在不同的网络环境下测试,看是否能重现问题。

  3. SSL证书验证:虽然阿里云OSS服务应该使用的是广泛信任的SSL证书,但某些旧设备或定制系统可能因为根证书不完整而无法正确验证SSL证书。你可以尝试在应用中禁用SSL证书验证(注意,这会降低安全性,仅作为调试手段),以判断是否为证书验证问题。如果这样做解决了问题,那么需要查找并安装缺失的根证书到设备上。

  4. 设置SSL协议和加密套件:在初始化OSSClient时,可以尝试指定更兼容的SSL协议版本和加密套件。例如,如果你当前没有特别指定,可以尝试显式指定TLSv1.2(前提是Android 4.2支持此版本)。

    // 注意:以下代码仅为示例,实际使用时请根据阿里云OSS SDK文档调整
    OkHttpUtils.initClient(new OkHttpClient.Builder()
       .sslSocketFactory(SSLSocketFactoryCompat.buildForTlsV12())
       .hostnameVerifier(new HostnameVerifier() {
           @Override
           public boolean verify(String hostname, SSLSession session) {
               return true; // 或者实现适当的主机名验证逻辑
           }
       })
       .build());
    
  5. 查看日志:详细查看阿里云OSS SDK的日志输出,以及设备上的系统日志,可能会提供更多关于SSL握手失败的具体原因。

  6. 用户反馈:考虑到这是在特定设备和操作系统版本上出现的问题,收集受影响用户的设备信息和具体操作步骤,向阿里云技术支持反馈,以便他们能够进一步分析并提供针对性的解决方案。

记得在生产环境中不要长期关闭SSL验证或使用不安全的配置,确保应用的安全性。希望这些建议能帮助你解决问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答