当前位置: 首页 > 知识库问答 >
问题:

在Android 4.4.4上修复SSL错误

白嘉志
2023-03-14

我们有一个现有的Android应用程序,它使用Retrifit连接到服务器并发送和接收JSON。自从将我的设备更新到Android4.4.4后,我在尝试连接时遇到以下错误:

D/Retrofit(8004): javax.net.ssl.SSLException: Read error: ssl=0x768c5c40: I/O error during system call, Connection reset by peer
D/Retrofit(8004):  at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
D/Retrofit(8004):  at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:689)
D/Retrofit(8004):  at okio.Okio$2.read(Okio.java:136)
D/Retrofit(8004):  at okio.AsyncTimeout$2.read(AsyncTimeout.java:211)
D/Retrofit(8004):  at okio.RealBufferedSource.indexOf(RealBufferedSource.java:244)
D/Retrofit(8004):  at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:191)
D/Retrofit(8004):  at com.squareup.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:189)
D/Retrofit(8004):  at com.squareup.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:101)
D/Retrofit(8004):  at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:676)
D/Retrofit(8004):  at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:426)
D/Retrofit(8004):  at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:371)
D/Retrofit(8004):  at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:466)
D/Retrofit(8004):  at com.squareup.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
D/Retrofit(8004):  at com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25)
D/Retrofit(8004):  at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:73)
D/Retrofit(8004):  at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38)
D/Retrofit(8004):  at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321)
D/Retrofit(8004):  at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
D/Retrofit(8004):  at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
D/Retrofit(8004):  at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
D/Retrofit(8004):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
D/Retrofit(8004):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
D/Retrofit(8004):  at retrofit.Platform$Android$2$1.run(Platform.java:142)
D/Retrofit(8004):  at java.lang.Thread.run(Thread.java:841)

我已经更新到最新版本的retrifit/OkHTTP和Okio,但是错误仍然存在。我猜这与Android 4.4.4中的OpenSSL补丁有关,但我找不到解决这个错误的方法。

富有

共有1个答案

宋朝
2023-03-14

为了在Pre-lollipop Android中使用referfit,您应该使用OKHTTP的较低版本,并强制实现支持Pre-lollipop的特定版本

implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation ("com.squareup.okhttp3:okhttp:3.12.12"){
    force = true //API 19 support
}
 类似资料:
  • 我安装了:“CPAN isntall crypt::ssleay”,因此“fs.cgi:错误500 SSL协商失败:”的错误更改为“请求fs.cgi时失败:SSL协商失败:在/usr/local/share/perl5/lwp/protocol/http.pm行25在/usr/local/share/perl5/lwp/protocol/http.pm行25” 怎么解决这个?我搜索了这个论坛,但问

  • 我在尝试向服务器提交构建时遇到了一些问题。每次我试图提交它,它都失败了。以下是该过程的输出: 请帮帮我!

  • 我对Unix系统很陌生,我只是不明白为什么在Ubuntu 20.04焦点窝上安装R时会出现这个问题。 我使用以下过程安装了 R: 在我的 /etc/apt/sources.list文件中检查是否存在字符串debhttps://cloud.r-project.org/bin/linux/ubuntu焦距-起重机40/; 使用命令:sudo apt-get update,然后命令sudo apt-ge

  • 我有一个基于django cookiecutter的django应用程序,运行在aws-ec2上。应用程序本身构建并运行正常。此应用程序使用django cities light库。当我运行docker compose-f production时。yml run—rm django python manage。py cities_light这是一个用国家/城市填充数据库的命令,我得到了这个错误:

  • 我使用Python3。Windows 7上的x 64位,在无法完全控制入站/出站流量处理的环境中。到本周为止,我已经能够使用标记pip,一切正常。本周,即使使用了标志,我也开始出现以下错误。 鉴于本周的pypi更改,我尝试将标志更改为,但这似乎没有帮助。 我还尝试下载和安装certifi、wincerstore和win32 certifi的轮子,以及针对此类问题的其他stackoverflow建议

  • 我用ruby 2.0在我的工作站上运行Ubuntu13.04。0,通过RVM安装。 $aptitude show libxml2 $aptitude show libxml2 dev 开发能力