Как я могу легко использовать HTTPS (самозаверяющий сертификат) с JSoup?

1

В университете мы должны разработать приложение для 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();
    }
  • 0
    Связанные / возможные дубликаты: stackoverflow.com/a/7745706
  • 0
    Спасибо @Craigy, но как я решаю следующее исключение "javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: доверенная привязка для пути сертификации не найдена". для сайта [dhbw-loerrach.de ( dhbw-loerrach.de )? Я следовал инструкциям и написал мне для тестирования небольшого Java-приложения, но на Android оно не запустится и заканчивается приведенным выше исключением. Есть ли ошибка с типом файла или в использовании его под Android 2.3?
Показать ещё 1 комментарий
Теги:
jsoup
https

1 ответ

1
Лучший ответ

Если JSoup не предоставляет какой-либо API, который позволяет вам пройти свой собственный магазин доверия, нет. Если у вас есть внедренное устройство, вы можете установить сертификат университета в хранилище доверия, используя это. Если у вас есть устройство Android 4.0 (ICS), существует пользовательский интерфейс для установки доверенных сертификатов CA. Другая идея: использовать HttpClient для получения данных, а затем использовать JSoup только для синтаксического анализа (это должно быть возможно).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню