通过Java登录网站?

时间:2011-07-27 22:59:36

标签: java javascript http

我正在尝试使用java来创建一个程序,通过插入用户名和密码来访问此website,然后在我登录时从帐户中获取一些数据。我通过谷歌搜索了很多并尝试了一些code但我没有太多运气来实现这一目标。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您使用的代码是旧技术; Commons HttpClient是一个更简单,更强大的选项,并且在线提供大量示例和文档。如果你不反对Ruby,我会把Watir扔进混合中;或者如果您实际上不需要代码,并且只想要一个简单的记录回放自动化,Selenium是一个不错的选择。

答案 1 :(得分:0)

缺乏对语言的理解,我无法给你具体的建议。

然而,要走的路是检查网页上的表格。然后,您可以将帖子请求发送到那里定义的站点。

作为帖子正文,您可以发送表单的参数,就像它们显示为URL参数一样。

<!-- language: lang-js -->
    String payload = "password=test&user=test" // password and user must be replaced with the names of the form fields and test with password and username respectively
    HttpURLConnection configConnection = new URL(formTarget).openConnection();
    System.out.println("+------------------------------------------------------");
    System.out.println("| Request ");
    System.out.println("+------------------------------------------------------");
    System.out.println("| URL: " + configConnection.getURL());
    System.out.println("+------------------------------------------------------");
    System.out.println("| Payload ");
    System.out.println("+------------------------------------------------------");
    System.out.println(payload);
    configConnection.setDoOutput(true);
    configConnection.setRequestMethod("POST");

    configConnection.getOutputStream().write(payload.getBytes());
    InputStream xmlInputStream = configConnection.getInputStream();

    int _byte = -1;
    ByteArrayOutputStream bios = new ByteArrayOutputStream();
    while ((_byte = xmlInputStream.read()) > -1) {
        bios.write(_byte);
    }
    final byte[] responseBytes = bios.toByteArray();
    String responseString = new String(responseBytes);
    System.out.println("+------------------------------------------------------");
    System.out.println("| Response ");
    System.out.println("+------------------------------------------------------");
    System.out.println("| Code: " + configConnection.getResponseCode());
    System.out.println("+------------------------------------------------------");
    System.out.println(responseString);
    System.out.println("+------------------------------------------------------");

为了更好地解析输出,您可以使用tagsoup库将其转换为正确的xhtml。