SSL握手失败连接到谷歌从Android客户端

问题描述:

我使用标准的代码SSL握手失败连接到谷歌从Android客户端

URL url = new URL(sb.toString()); 
conn = (HttpsURLConnection) url.openConnection(); 
InputStreamReader in = new InputStreamReader(conn.getInputStream()); 

想要从Android客户端连接到谷歌Places API的。但我得到这个例外:

02-24 02:29:35.535: E/AdapterClass(3122): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:374) 
02-24 02:29:35.535: E/AdapterClass(3122): at com.android.okhttp.Connection.upgradeToTls(Connection.java:197) 
02-24 02:29:35.535: E/AdapterClass(3122): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xaf85c200: Failure in SSL library, usually a protocol error 
02-24 02:29:35.535: E/AdapterClass(3122): error:1407743E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert inappropriate fallback (external/openssl/ssl/s23_clnt.c:765 0xac3f9e61:0x00000000) 

任何想法?我注意到这只发生在我使用OkHttp请求时,但不是针对此特定请求而是在我的应用的其他部分。那么为什么okhttp会在这里扮演一个角色(如stacktrace所示)?

这个问题通过切换到OkHttp的最新版本(现在的2.2)(我之前使用1.6)来解决。

+3

请问您能解释一下这一点吗?因为我有同样的问题 – 2015-04-18 11:38:28

+1

@ Mr.Noob我刚刚改变了依赖关系,并开始使用最新版本,问题消失了。我还没有真正明白为什么会发生。 – splinter123 2015-09-03 09:24:37