以下のコードは、HTTP (API バージョン 7 および 8) および HTTPS (API バージョン 7) で動作します。HTTPS (API バージョン 8) の場合、「java.io.IOException: SSL ハンドシェイクの失敗: SSL ライブラリでの失敗、通常はプロトコル エラー」というエラーが表示されます。
なぜバージョン8だけで考えているのですか?
コード...
HttpURLConnection connection = null;
BufferedReader brd = null;
String line = "" ;
StringBuilder sb = new StringBuilder();
try {
//Set up the initial connection
//connection = (HttpURLConnection) new URL("http://MYSERVER.com").openConnection(); //Works
connection = (HttpURLConnection) new URL("https://MYSERVER.com").openConnection(); //error
connection.connect();
brd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
sb = new StringBuilder();
while ((line = brd.readLine()) != null)
sb.append(line);
System.out.println(sb.toString());
} catch (IOException e) {
e.printStackTrace();
} finally{
//close the connection, set all objects to null
connection.disconnect();
brd = null;
sb = null;
connection = null;
}
完全なエラー スタック
WARN/System.err(267): java.io.IOException: SSL ハンドシェイクの失敗: SSL ライブラリでの失敗、通常はプロトコル エラー WARN/System.err(267): エラー:140773F2:SSL ルーチン:SSL23_GET_SERVER_HELLO:sslv3 アラートの予期しないメッセージ(external/openssl/ssl/s23_clnt.c:599 0xaf076ad8:0x00000000) org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(ネイティブメソッド) at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl .startHandshake(OpenSSLSocketImpl.java:316) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.getSecureSocket(HttpConnection.java:168) at org.apache.harmony.luni.internal.net .www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:399) at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:147)
ありがとう、ナラヤナン