Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java填写表单,可能控制浏览器?_Java_Cookies_Post - Fatal编程技术网

使用Java填写表单,可能控制浏览器?

使用Java填写表单,可能控制浏览器?,java,cookies,post,Java,Cookies,Post,现在是否可能通过Java填写post表单?我的问题不仅仅是使用其他工具,而是页面必须使用帐户登录,然后我才能填写表单。这是一个简单的表单,只有3个输入-姓名、电子邮件、出生日期(文本)。但我需要饼干来填饱肚子 以下是我目前的方法: public static void doSubmit(String url, HashMap<String, String> data) throws Exception { URL siteUrl = new URL(url); Htt

现在是否可能通过Java填写post表单?我的问题不仅仅是使用其他工具,而是页面必须使用帐户登录,然后我才能填写表单。这是一个简单的表单,只有3个输入-姓名、电子邮件、出生日期(文本)。但我需要饼干来填饱肚子

以下是我目前的方法:

public static void doSubmit(String url, HashMap<String, String> data) throws Exception {
    URL siteUrl = new URL(url);
    HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
    conn.setRequestProperty("Cookie", "user=john; pass=password");
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setDoInput(true);
    System.out.println("Debug 1: URL = "+url);

    DataOutputStream out = new DataOutputStream(conn.getOutputStream());

    Set keys = data.keySet();
    Iterator keyIter = keys.iterator();
    String content = "";
    for(int i=0; keyIter.hasNext(); i++) {
        Object key = keyIter.next();
        if(i!=0) {
            content += "&";
        }
        content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8");
    }
//  System.out.println(content);
    out.writeBytes(content);
    out.flush();
    out.close();
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line = "";
    while((line=in.readLine())!=null) {
        System.out.println(line);
    }
    in.close();
}
有没有更简单的方法?可能控制浏览器,如Chrome自动填写?

使用。它是一个编程的Java web浏览器。您只需告诉它转到一个URL,用一些文本填充一些文本字段,单击submit按钮,它就会返回下一页,就像使用GUI一样。

还有和。如果您需要交换实现,可以使用


对于像这样琐碎的事情,可能已经足够了,但需要更多的手工工作。

在cookie中存储user/pass是一个巨大的安全漏洞。尽快把它修好。或者,如果它不是你的网站,报告它。
        data.put("name", "name");
        data.put("email", "email@email.com");
        data.put("dob", "1/1/1900");
        doSubmit("link.com/index.php", data);