Java HttpURLConnection-无法发送密码表单帖子

时间:2019-11-01 16:23:30

标签: java html post

有一个我想从其访问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应用程序顺便说一句。

0 个答案:

没有答案