Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Работаем С Протоколом Https В Android

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,071
Баллы
155
Возраст
52
В настоящее время всё больше интернет ресурсов переходят на работу через защищённое соединение

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

(HyperText Transfer Protocol Secure). Необходимость этого перехода обусловлена тем, что в случае стандартного протокола HTTP данные между сервером и клиентом так или иначе передаются в открытом виде. Что не всегда приемлемо даже для «обычных сайтов», не говоря уже о web ресурсах которые работают с конфиденциальной информацией (например, ресурсы финансовых, государственных, медицинских учреждений и т.д.).

Естественно, что вслед за самими ресурсами на HTTPS переходят и приложения, взаимодействующие с ними.


По существу, использование HTTPS в Android во многом схоже с обычным HTTP (пример его использования в Android можно найти

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

). Единственные отличия:

  • Вместо класса HttpURLConnection используется класс HttpsURLConnection;
  • Необходимо задавать режим проверки сертификатов;
  • Для соединения необходимо явно вызывать метод connect класса HttpsURLConnection.

Рассмотрим процесс работы с HTTPS более подробно.

Перед тем, как инициировать подключение необходимо задать механизм проверки сертификата web узла. Существует целый ряд таких механизмов, но наиболее простой из них основан на классе

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.

Создадим объект класса HostnameVerifer, который будет отвечать за проверку сертификата.

HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("example.com", session);
}
};

В методе verify мы проверяем соответствие сертификата домену web узла.

Далее создаём экземпляр класса HttpsURLConnection и устанавливаем созданный нами объект HostnameVerifier в качестве проверяющего для данного конкретного соединения.

URL url = new URL("https://example.com/");
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setHostnameVerifier(hostnameVerifier);

После этого можно вызывать метод connect и при успешном соединении работать с web узлом. После завершения работы соединение закрываем.

urlConnection.connect();
if(urlConnection.getResponseCode()== HttpsURLConnection.HTTP_OK) {
// Здесь работаем с web узлом
}
urlConnection.disconnect();

Как и с любым другим сетевым соединением, все работы с HTTPS следует выполнять в отдельном потоке. Например, AsyncTask.
 
Вверх