【问题标题】:How can I easily use HTTPS (self-signed certificate) with JSoup?如何在 JSoup 中轻松使用 HTTPS(自签名证书)?
【发布时间】:2012-01-16 07:06:41
【问题描述】:

在大学里,我们必须开发一个 android 应用程序,它可以从网站上获取我们的分数。

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

对于这些经常出现的问题,我已经看到了一些通用的解决方案,但是他们使用了扩展的 DefaultHttpClient 和自己的 SSLSocketFactory。这些解决方案看起来不太好,有没有使用 JSoup 框架的简单漂亮的解决方案?

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();
    }

【问题讨论】:

  • 相关/可能重复:stackoverflow.com/a/7745706
  • 谢谢@Craigy,但我如何解决以下异常“javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。”对于网站 [dhbw-loerrach.de(dhbw-loerrach.de)?我已经按照说明写信给我测试一个小型 java 应用程序,但在 android 上它不会运行并以上述异常结束。文件类型或在 Android 2.3 下的使用是否有错误?
  • @Pyth0n 您可能应该就该特定问题提出一个新问题

标签: java android https jsoup


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多