Java 如何在JSoup中轻松使用HTTPS(自签名证书)?
在大学里,我们必须开发一个android应用程序,它可以从网站上获得我们的分数 我们使用JSoup框架获取和解析HTML页面。现在的问题是,我们的大学使用自签名证书进行HTTPS连接,而大型可信CA不信任该证书 我已经看到了一些常见问题的通用解决方案,但它们使用了扩展的DefaultHttpClient和自己的SSLSocketFactory。这些解决方案看起来不是很好,使用JSoup框架是否有一个简单漂亮的解决方案Java 如何在JSoup中轻松使用HTTPS(自签名证书)?,java,android,https,jsoup,Java,Android,Https,Jsoup,在大学里,我们必须开发一个android应用程序,它可以从网站上获得我们的分数 我们使用JSoup框架获取和解析HTML页面。现在的问题是,我们的大学使用自签名证书进行HTTPS连接,而大型可信CA不信任该证书 我已经看到了一些常见问题的通用解决方案,但它们使用了扩展的DefaultHttpClient和自己的SSLSocketFactory。这些解决方案看起来不是很好,使用JSoup框架是否有一个简单漂亮的解决方案 private LoginState connect(String usern
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,允许您通过自己的信任存储,否则不会。如果您有根设备,您可以使用将大学证书安装到信任存储。如果您有Android 4.0(ICS)设备,则有一个用于安装可信CA证书的UI。另一个想法是:使用HttpClient获取数据,然后仅使用JSoup进行解析(这应该是可能的) 除非JSoup公开一些API,允许您通过自己的信任存储,否则不会。如果您有根设备,您可以使用将大学证书安装到信任存储。如果您有Android 4.0(ICS)设备,则有一个用于安装可信CA证书的UI。另一个想法是:使用HttpClient获取数据,然后仅使用JSoup进行解析(这应该是可能的) 相关/可能重复:谢谢@Craigy,但我如何解决以下异常[dhbw loerrach.de()网站的“javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:Trust anchor for certification path not found.”?我已经按照说明编写了测试一个小型java应用程序的代码,但在android上它不会运行,并以上述异常结束。文件类型或在android 2.3下的使用中是否存在错误?@Pyth0n您可能应该问一个关于特定问题的新问题相关/可能的重复:谢谢@Craigy,但是如何解决站点[dhbw loerrach.de()的以下异常“javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:Trust anchor for certification path not found.”?我已经按照说明编写了测试一个小型java应用程序的代码,但在android上它不会运行,并以上述异常结束。文件类型或在android 2.3下的使用中是否存在错误?@Pyth0n您可能应该问一个关于该特定问题的新问题