有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jsoup HTTPS连接

所以,我正在尝试登录一个网站,保存cookies并连接到另一个网站,同时提供cookies并继续抓取网站。所有这些都使用Jsoup和常规java(我计划稍后再使用Android)。我的问题是,带有loginform的站点正在使用https,而我在那里得到了a ton of errors。在四处搜索后,我发现了this stackoverflow question。所描述的方法涉及从登录站点获取SSL证书,并从更改扩展名。对。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,在这种情况下,我认为不可能使用静态证书(?)

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

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

            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password.toCharArray());
                }
            });