- 先月までは大丈夫だった(通信できていた)気がします
- javax.net.ssl.SSLExceptionが発生するようになりました
- 私が所有している端末のうち、android2.2のみで不具合が起きていました
- org.apache.http.impl.client.DefaultHttpClientを使って実装していました
私が利用させていただいているWeb API(https)では、javax.net.ssl.HttpsURLConnectionを使うと通信できるようになりましたので、そのときのソースを書いておきます。
try {
URL url = new URL("https/......");
HttpsURLConnection urlConnection = null;
try {
urlConnection = (HttpsURLConnection) url.openConnection();
SSLContext context = SSLContext.getInstance("TLS");
TrustManager tm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
context.init(null, new TrustManager[] { tm }, null);
urlConnection.setSSLSocketFactory(context.getSocketFactory());
InputStream in = urlConnection.getInputStream();
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// 通信成功!!!
// inを煮るなり焼くなりしてください!
}
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
URL url = new URL("https/......");
HttpsURLConnection urlConnection = null;
try {
urlConnection = (HttpsURLConnection) url.openConnection();
SSLContext context = SSLContext.getInstance("TLS");
TrustManager tm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
context.init(null, new TrustManager[] { tm }, null);
urlConnection.setSSLSocketFactory(context.getSocketFactory());
InputStream in = urlConnection.getInputStream();
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// 通信成功!!!
// inを煮るなり焼くなりしてください!
}
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
0 件のコメント:
コメントを投稿