所以,我正在尝试登录网站,保存cookie并连接到另一个网站,同时提供cookie并继续抓取网站。全部使用Jsoup和常规java(我计划稍后转移到Android)。我的问题是,使用loginform的网站正在使用https,我得到a ton of errors。搜索后我发现this stackoverflow question。描述的方法涉及从登录站点获取SSL证书并将扩展名从.crt更改为.jks。但是,我不断收到错误,因此无法使其正常工作。这是我的代码
public static void main(String args[]) throws IOException {
//Log in
Connection.Response login = Jsoup.connect("https://login.emu.dk")
.data("login", "myUsername")
.data("pass", "myPassword")
.method(Method.POST)
.execute();
//Keep logged in
Map<String,String> loginCookies = login.cookies();
ArrayList<Lesson> unsorted = new ArrayList<Lesson>();
URL elevplan = new URL("https://elevplan.dk");
CSVParser csvParser = new CSVParser();
System.setProperty("javax.net.ssl.trustStore", "/Users/philipjakobsen/Desktop/login.emu.dk.jks");
System.setProperty("javax.net.ssl.trustStore", "/Users/philipjakobsen/Desktop/login.emu2.dk.jks");
Document doc = Jsoup.connect("https://elevplan.dk")
.cookies(loginCookies)
.get();
那么,有没有人知道如何让Jsoup进行https连接?如前所述,我想将我的应用程序“移植”到Android,在这种情况下,我认为不可能使用静态证书(?)。
提前致谢。
答案 0 :(得分:3)
尝试按照(只需将其放在Jsoup.connect之前(&#34; https://login.emu.dk&#34;):
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password.toCharArray());
}
});