当我与我的网络服务器进行https连接时,我有一个SSLProtocolException。我在Android 2.3 Gingebread中只有这个例外;相同的代码在所有其他Android版本中都能正常运行。这个Android版本有什么问题吗?
我还向Google发布了一个错误报告:http://code.google.com/p/android/issues/detail?id=16121&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars
我附上了例外:
WARN / System.err(6218):javax.net.ssl.SSLProtocolException:读取错误:ssl = 0x3c97e8:SSL库失败,通常是协议错误 WARN / System.err(6218):at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(Native Method) WARN / System.err(6218):at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLInputStream.read(OpenSSLSocketImpl.java:788) WARN / System.err(6218):at org.apache.harmony.luni.internal.net.www.protocol.http.FixedLengthInputStream.read(FixedLengthInputStream.java:44) WARN / System.err(6218):at java.io.BufferedInputStream.read(BufferedInputStream.java:319) WARN / System.err(6218):在android.os.Handler.dispatchMessage(Handler.java:99) WARN / System.err(6218):在android.os.Looper.loop(Looper.java:123) WARN / System.err(6218):在android.os.HandlerThread.run(HandlerThread.java:60)
答案 0 :(得分:0)
尝试使用SSLSocketFactory
直接从套接字读取。我在这里发布了一个带注释代码的测试用例:SSLProtocolException when reading https responses on Android 2.3.3 devices
答案 1 :(得分:0)
检查服务器是否需要客户端身份验证。在我的情况下,在tomcat server.xml clientAuth =“true”中,所以出现错误,所以我将其更改为false。