Я до сих пор использую следующий код для вызова API «https» в приложении.
public class HttpsTrustManager implements X509TrustManager {
private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[]{};
@SuppressLint("TrustAllX509TrustManager")
@Override
public void checkClientTrusted(
X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {
}
@SuppressLint("TrustAllX509TrustManager")
@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 e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
}
}
Я новичок в android изменениях безопасности, внесенных в Google Play Store. Я получаю это предупреждение из Play Магазин:
измените метод проверки в пользовательском интерфейсе HostnameVerifier, чтобы он возвращал false, когда имя хоста сервера не соответствует вашим ожиданиям.
Я хочу знать, что какие изменения я должен сделать в приложении или на сервере ?? Я пробовал другие ссылки, присутствующие в стеке Overflow, но я не понимаю, что мне нужно изменить приложение или просто создать подписанный сертификат на сервере?
Решение, которое я могу найти, но не уверен, что оно сработает или нет
Если я добавлю следующий код:
`HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession arg1) {
if (hostname.equalsIgnoreCase("https://xxxxxx.xx") ){
return true;
} else {
return false;
}
}});`
, не возникнет ли проблем в магазине игр?