簡體   English   中英

如何在JSoup中輕松使用HTTPS(自簽名證書)?

[英]How can I easily use HTTPS (self-signed certificate) with JSoup?

在大學里,我們必須開發一個android應用程序,該應用程序可以從網站上獲取我們的分數。

我們使用JSoup框架來捕獲和解析HTML頁面。 現在的問題是,我們的大學將自簽名證書用於HTTPS連接,較大的受信任CA不信任該證書。

對於這些經常發生的問題,我已經看到了一些常規解決方案,但是它們使用帶有自己的SSLSocketFactory的擴展DefaultHttpClient。 這些解決方案看起來不太好,是否有通過使用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,否則不會。 如果您擁有植根設備,則可以使用this將大學的證書安裝到信任庫中。 如果您有Android 4.0(ICS)設備,則有一個用於安裝受信任CA證書的UI。 另一個想法:使用HttpClient來獲取數據,然后使用JSoup僅用於解析(應該可以)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM