0

因此,我正在尝试登录一个站点,保存 cookie 并连接到另一个站点,同时提供 cookie 并继续抓取该网站。全部使用 Jsoup 和常规 java(我计划稍后迁移到 Android)。我的问题是,带有登录表单的网站正在使用 https 并且我收到大量错误。在四处搜索后,我发现了这个 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,在这种情况下,我认为不可能使用静态证书(?)。

提前致谢。

4

1 回答 1

3

尝试以下(只需将其放在 Jsoup.connect(" https://login.emu.dk ") 之前):

        Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password.toCharArray());
            }
        });
于 2014-12-11T10:28:55.740 回答