2010-09-25 83 views
2

我正嘗試使用Google App Engine for Java(https://applicationname.appspot.com)託管的安全HTTPS遠程服務連接Android應用程序, Android附帶的HTTPClient 4實現。該證書是經過簽署且有效的表單* .appspot.com。嘗試與GAE/Java連接的Android SSL失敗

我在真實設備(HTC Hero)中使用Android 2.1,並且出現以下錯誤:SSL23_GET_SERVER_HELLO:unknown protocol

這是我的代碼部分:

HttpParams params = new BasicHttpParams();   
... 

SchemeRegistry schemeRegistry = new SchemeRegistry(); 
schemeRegistry.register(
     new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
schemeRegistry.register(
     new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
.. 
ClientConnectionManager cm = 
     new ThreadSafeClientConnManager(params, schemeRegistry); 
DefaultHttpClient result = new DefaultHttpClient(cm, params); 

什麼可能會發生任何解決方案或解決方法你知道嗎?

這是完整的堆棧跟蹤:

09-25 18:19:05.452: ERROR/OpenSSLSocketImpl(1195): Unknown error 1 during connect 
09-25 18:19:05.460: ERROR/ServerProxy(1195): HTTPHelp : IOException : java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error 
09-25 18:19:05.460: ERROR/ServerProxy(1195): error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:585 0xaf586674:0x00000000) 
09-25 18:19:05.460: ERROR/ServerProxy(1195): java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error 
09-25 18:19:05.460: ERROR/ServerProxy(1195): error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:585 0xaf586674:0x00000000) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native Method) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:305) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.<init>(OpenSSLSocketImpl.java:502) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:443) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:93) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
09-25 18:19:05.460: ERROR/ServerProxy(1195):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 

非常感謝你。

+0

你有沒有找到解決方案?我現在正在經歷這個問題。 – bszom 2014-11-19 15:11:13

回答

0

我不使用Java,但對於GAE - 您在app.yaml中使用了「安全」參數嗎? http://code.google.com/appengine/kb/general.html#https

+0

Yas,實際上我可以使用普通的桌面瀏覽器瀏覽網站,證書是有效的。該問題僅在httpclient嘗試連接服務器時出現。 – 2010-09-25 16:35:25

+0

@Guido啊沒關係,那我就不確定了。你有沒有試過尋找SSL錯誤定義的線索? – Kai 2010-09-25 16:44:29

相關問題