public class HttpsTrustManager implements X509TrustManager {
private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[]{};
@Override
public void checkClientTrusted(
X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {
}
@Override
public void checkServerTrusted(
X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {
}
public boolean isClientTrusted(X509Certificate[] chain) {
return true;
}
public boolean isServerTrusted(X509Certificate[] chain) {
return true;
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return _AcceptedIssuers;
}
public static void allowAllSSL() {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
SSLContext context = null;
if (trustManagers == null) {
trustManagers = new TrustManager[]{new HttpsTrustManager()};
}
try {
context = SSLContext.getInstance("TLS");
context.init(null, trustManagers, new SecureRandom());
} catch (NoSuchAlgorithmException | KeyManagementException e) {
e.printStackTrace();
}
HttpsURLConnection.setDefaultSSLSocketFactory(context != null ? context.getSocketFactory() : null);
}
}
このクラスを追加し、それはアプローチを保存するが、私はこれで私の問題を解決していないですがHttpsTrustManager.allowAllSSL();
であなたのMainActivityからそれを呼び出す上の任意の情報を見つけるcant't。
'oldhostname'ではなく' hostname1'を使ってURLを持つコードを実行していますか?あなたの症状は、あなたのJavaコードがまだ 'oldhostname'を使用している場合に適合します。 – CommonsWare
これは間違ったURLの問題で、ブラウザで同様のエラーが発生する可能性があります。または、SNIの問題です。http://stackoverflow.com/questions/5879894/android-ssl-sni-supportを参照してください。 –
はいURLが正しいと確信しています。私はむしろSteffenが正しいことを確信しています。私はSNI/Androidを少し前に見ていましたが、私は2.x以上のものはOKでした。私が読んだことを誤解したように見えますが、私はリンクを徹底的に読むために時間をかけます。ありがとうSteffen –