Java:模拟wget --no-check-certificate

时间:2017-01-18 10:34:44

标签: java https wget httpsurlconnection

我必须在java中模拟以下wget命令:

wget.exe --no-check-certificate --user utente --password pordine - https://x.x.x.x:YYYY/jsonContent

我几乎做到了,但是出了点问题,因为 - 我想 - 我无法在命令行命令中设置选项--no-check-certificate。

这是我的主要内容:

//main
    URL url;
    try {
        url = new URL("https://x.x.x.x:YYYY/jsonContent");
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

        String userPassword = "utente:pordine";
        String encoded = Base64.getEncoder().encodeToString((userPassword).getBytes(StandardCharsets.UTF_8));

        conn.setRequestProperty("Authorization", "Basic "+encoded);
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Accept", acceptProperty);
        //hOW TO SIMULATE THE OPTION --no-check-certificate ?

        System.out.println("Response Code : " + conn.getResponseCode()); //500

        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    } catch ...

而且......这是我得到的错误:

java.io.IOException: Server returned HTTP response code: 500 for URL: https://x.x.x.x:YYYY/basicAuth

== UPDATE ==

我回到了问题所在;我修改了服务器部分以提供额外的日志,我更接近根本原因。 服务器有一个用于管理身份验证的类:AuthManager。这是注入的,所以我覆盖了这个类的构造函数,以便每次调用它时都会记录。

当我通过浏览器访问URL时,构造函数AuthManager()被调用一次,并且在整个会话期间保留有关身份验证的值。 但是当我通过我的脚本访问相同的URL时,构造函数被调用两次:在第一次调用之后,在AuthManager中设置了一些信息,但稍后第二次调用构造函数时会覆盖该对象。新对象不会设置一些变量,当需要这些数据时,将启动异常。

知道如何更改我的脚本吗?我会尝试继续写下更多信息。 看来我需要像会议中的单身人士这样的东西 - 或类似的......

0 个答案:

没有答案