В университете мы должны разработать приложение для Android, которое захватывает наши оценки с веб-сайта.
Мы используем JSoup Framework для захвата и анализа HTML-страниц. Проблема в том, что наш университет использует самоподписанный сертификат для подключения HTTPS, которому не доверяет более крупный доверенный ЦС.
Я видел эти часто возникающие проблемы, некоторые общие решения, но они используют расширенный DefaultHttpClient с собственным SSLSocketFactory. Эти решения выглядят не очень красиво, есть ли простое решение для этого с помощью JSoup Framework?
private LoginState connect(String username, String password) {
try {
if (isOnline()) {
Log.i(TAG, "Sending POST.");
Connection connection = Jsoup.connect(LOGIN_URL)
.data(USER_FIELD, username).data(PASS_FIELD, password)
.data(LOGIN_BUTTON, "Anmelden")
.data(LOGIN_TYPE, "login").data(PID, "2")
.timeout(DEFAULT_TIMEOUT);
mDocument = connection.post();
mCookies.putAll(connection.response().cookies());
if (isConnected()) {
Log.i(TAG, "Login successful.");
setState(LoginState.LOGIN_SUCCESSFUL);
} else {
Log.i(TAG, "Login failed.");
setState(LoginState.LOGIN_FAILED);
}
} else {
Log.i(TAG, "No Internet Connection.");
setState(LoginState.BAD_CONNECTION);
}
} catch (IOException ex) {
Log.e(TAG, ex.getStackTrace().toString());
setState(LoginState.BAD_CONNECTION);
}
return getState();
}
Если JSoup не предоставляет какой-либо API, который позволяет вам пройти свой собственный магазин доверия, нет. Если у вас есть внедренное устройство, вы можете установить сертификат университета в хранилище доверия, используя это. Если у вас есть устройство Android 4.0 (ICS), существует пользовательский интерфейс для установки доверенных сертификатов CA. Другая идея: использовать HttpClient для получения данных, а затем использовать JSoup только для синтаксического анализа (это должно быть возможно).