我必须在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中设置了一些信息,但稍后第二次调用构造函数时会覆盖该对象。新对象不会设置一些变量,当需要这些数据时,将启动异常。
知道如何更改我的脚本吗?我会尝试继续写下更多信息。 看来我需要像会议中的单身人士这样的东西 - 或类似的......