- Используется HTTPS-соединение.
- Поведение по умолчанию
- Не уверен, но читайте ниже.
Я только что написал некоторый код в качестве теста (см. Ниже). В итоге вызов URL.openConnection () вернет вам libcore.net.http.HttpsURLConnectionImpl класс.
Это реализация HttpsURLConnection, но HttpsURLConnection наследует от HttpURLConnection. Итак, вы видите полиморфизм на работе.
Если заглянуть дальше в отладчик, выясняется, что класс использует фабричные методы по умолчанию.
hostnameVerifier = javax.net.ssl.DefaultHostnameVerifier
sslSocketFactory = org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl
Исходя из этого, похоже, что используется поведение по умолчанию. Я не знаю, означает ли это, что вы доверяете всему, но вы определенно устанавливаете HTTPS-соединение.
Документация, намекающая на подключение, автоматически доверяет CA, которые хорошо известны, но не подписаны самостоятельно. (см. ниже) Я не проверял это, но у них есть пример кода на , как это сделать здесь .
Если приложение хочет доверять центру сертификации (CA)
сертификаты, которые не являются частью системы, следует указать его
собственный X509TrustManager через набор SSLSocketFactory на
HttpsURLConnection.
Runnable r = new Runnable() {
public void run() {
try {
URL test = new URL("https://www.google.com/");
HttpURLConnection connection = (HttpURLConnection) test.openConnection();
InputStream is = connection.getInputStream();
StringWriter sw = new StringWriter();
String value = new java.util.Scanner(is).useDelimiter("\\A").next();
Log.w("GOOGLE", value);
} catch(Exception e) {
Log.e("Test", e.getMessage());
}
}
};
Thread t = new Thread(r);
t.start();