如何在JSoup中轻松使用HTTPS(自签名证书)?

时间:2011-12-08 21:24:01

标签: java android https jsoup

在大学里,我们必须开发一个Android应用程序,它从网站上抓取我们的标记。

我们使用JSoup Framework来抓取和解析HTML页面。现在的问题是我们的大学使用自签名证书进行HTTPS连接,而不受更大的可信CA的信任。

我已经看到了这些经常出现的问题,一些通用的解决方案,但他们使用扩展的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 个答案:

答案 0 :(得分:1)

除非JSoup公开了一些让你通过自己的信任商店的API,否则没有。如果您有root设备,则可以使用this将大学的证书安装到信任存储区。如果您有Android 4.0(ICS)设备,则可以使用UI来安装可信CA证书。另一个想法:使用HttpClient获取数据,然后仅使用JSoup进行解析(这应该是可能的)。