有一个我想从其访问Java程序中数据的网站。在浏览器中打开网站时,没有一个我想要看到的内容,而是一个密码文本字段和一个用于提交密码的按钮。输入正确的密码并按提交按钮后,我可以看到内容。 URL仍然相同。通常,我可以使用以下代码获取html数据:
URL url = new URL("https://wordpress.***.***/***/***/***/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
var reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
当然,这不会打印出我要访问的数据。有趣的部分可能是这个:
<form action="https://wordpress.***.***/***/wp-login.php?action=postpass" class="post-password-form" method="post">
<p>Some text:</p>
<p><label for="pwbox-526">Passwort: <input name="post_password" id="pwbox-526" type="password" size="20" /></label> <input type="submit" name="Submit" value="Absenden" /></p>
</form>
在研究了有关使用Java发送表单帖子的一些知识之后,我想到了以下代码,尽管现在它无法打印任何内容:
URL url = new URL("https://wordpress.***.***/***/wp-login.php?action=postpass");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
String postData = "post_password=*******&Submit=Absenden";
connection.setRequestProperty("Content-Length", postData.length() + "");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
connection.setUseCaches(false);
connection.connect();
var out = connection.getOutputStream();
out.write(URLEncoder.encode(postData, StandardCharsets.UTF_8).getBytes());
out.flush();
out.close();
var reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
This is what the network panel looks like in the Microsoft Edge Developer Tools
有人可以解决吗?这是我第一次在Java项目中使用网络。我需要一个Android应用程序顺便说一句。