- Регистрация
- 9 Май 2015
- Сообщения
- 1,071
- Баллы
- 155
- Возраст
- 52
В настоящее время всё больше интернет ресурсов переходят на работу через защищённое соединение (HyperText Transfer Protocol Secure). Необходимость этого перехода обусловлена тем, что в случае стандартного протокола HTTP данные между сервером и клиентом так или иначе передаются в открытом виде. Что не всегда приемлемо даже для «обычных сайтов», не говоря уже о web ресурсах которые работают с конфиденциальной информацией (например, ресурсы финансовых, государственных, медицинских учреждений и т.д.).
Естественно, что вслед за самими ресурсами на HTTPS переходят и приложения, взаимодействующие с ними.
По существу, использование HTTPS в Android во многом схоже с обычным HTTP (пример его использования в Android можно найти ). Единственные отличия:
Рассмотрим процесс работы с 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.
Естественно, что вслед за самими ресурсами на 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.