Intereting Posts
Используйте Parcelable для передачи объекта из одной активности Android в другую Аутентификация сторон сервера входа в систему Google для Android в Nodejs Конечная точка App Engine с доработкой Должен ли быть один SQLiteOpenHelper для каждой таблицы в базе данных? Что такое размер шрифта элемента ActionBar по умолчанию? Лучший вариант дизайна базы данных для Android-приложения с огромными данными Java.lang.AbstractMethodError, когда шпион LinkedList в Android Как преобразовать временную метку UTC в локальное время устройства в android Программно скрывать / отключать смайлики на мягкой клавиатуре Android Ошибка распознавания цифр в Tesseract – андроид Как увидеть фактические параметры gcc при создании Android из источника? Создать файл из URI типа Android Аутентификация в качестве учетной записи службы из приложения Android для Google Cloud Storage Андроидная студия Logcat отображает данные json в одной строке и части данных Отразить изображение растрового изображения по горизонтали или по вертикали

Android: создание запроса Https

Как избежать исключения «javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated» и разрыва в Apache Linux? «Конструктор SSLSocketFactory (SSLContext) не определен» при выполнении запроса Https?

Solutions Collecting From Web of "Android: создание запроса Https"

Этот метод принимает экземпляр HttpClient и возвращает экземпляр HttpClient готового к https.

private HttpClient sslClient(HttpClient client) { try { X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new MySSLSocketFactory(ctx); ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = client.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", ssf, 443)); return new DefaultHttpClient(ccm, client.getParams()); } catch (Exception ex) { return null; } } 

Поскольку у Android org.apache.http.conn.ssl.SSLSocketFactory нет конструктора SSLSocketFactory (SSLContext), я расширил класс следующим образом.

  public class MySSLSocketFactory extends SSLSocketFactory { SSLContext sslContext = SSLContext.getInstance("TLS"); public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { super(truststore); TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; sslContext.init(null, new TrustManager[] { tm }, null); } public MySSLSocketFactory(SSLContext context) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, UnrecoverableKeyException { super(null); sslContext = context; } @Override public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose); } @Override public Socket createSocket() throws IOException { return sslContext.getSocketFactory().createSocket(); } } 

Отличная статья здесь: http://javaskeleton.blogspot.com/2010/07/avoiding-peer-not-authenticated-with.html

И некоторая помощь здесь: доверять всем сертификатам с использованием HttpClient через HTTPS

У меня была аналогичная проблема, которая больше похожа на этот вопрос, но первопричина полностью отличалась от той, которая упоминалась в обоих вопросах.

Я использовал DefaultHttpClient как httpclient для запроса https://maps.googleapis.com как ссылки. Я старался предлагать все предлагаемые решения, но никто не работал для меня. Спустя несколько часов, пытаясь решить проблему, она обнаружила первопричину: мое устройство было подключено к гостевому WIFI, который, вероятно, имеет некоторые специальные правила фильтрации, которые блокировали соответствующие сетевые части. Переключение на другую сеть решило мою проблему.