Как я могу легко использовать HTTPS (самозаверяющий сертификат) с JSoup? - PullRequest
1 голос
/ 09 декабря 2011

В университете мы должны разработать приложение для 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();
    }

1 Ответ

1 голос
/ 09 декабря 2011

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

...