【问题标题】:Java - Interact with website to update informationJava - 与网站交互以更新信息
【发布时间】:2011-02-18 20:59:48
【问题描述】:

所以我遇到了这种情况,我可能有 2 条不同的路线要走。问题是我必须更新我生成的一些信息,这些信息已经格式化和解析并准备好显示。现在我不知道如何将这个 txt 文件(或巨型字符串)输入到站点中。一种方法是找到一种 Java 与页面交互的方法,将信息粘贴到文本区域并保存/提交更新。另一种方法是编辑页面文件本身,在它应该去的地方插入巨大的字符串。我一直在研究 HTTP 表单,但大多数都与第三方库一起使用。但我不知道如何做任何一条路线。我一直在检查这些网站和其他网站,但我认为有些太复杂或需要像 Selenium 这样的外部库,而且我真的没有使用 URLConnection 类的经验。感谢您的帮助!

--我没有服务器的控制权,我可以简单的访问它,所以我想第一个想法会更实用...

http://kspace.in/blog/2008/05/30/submit-html-form-using-java/

http://www.devcomments.com/q450155/How-to-have-Java-application-interact-with-website

【问题讨论】:

    标签: java http url interaction


    【解决方案1】:

    使用 HTTP 发布:

    http://www.exampledepot.com/egs/java.net/post.html

    try {
        // Construct data
        String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");
        data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
    
        // Send data
        URL url = new URL("http://hostname:80/cgi");
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();
    
        // Get the response
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = rd.readLine()) != null) {
            // Process line...
        }
        wr.close();
        rd.close();
    } catch (Exception e) {
    }
    

    【讨论】:

    • 好的,但这会用我拥有的简单字符串写入整个文件,不是吗?我怎么能只在整个 HTML 的特定部分发布生成的信息?我想过使用标签表单来确切地知道它应该去哪里......
    • 现在,data 对象包含一些文本。您必须对 HTML 进行一些处理,以提取要发送到网站的字符串,然后发布它们。您必须查看带有文本框的页面才能查看它发布到的网址。
    • 嗯,谢谢大家的帮助,我会尝试根据我的需要修改这个
    【解决方案2】:

    最好的办法是使用专为自动化测试设计的框架,例如Selenium/WebDriverHtmlUnit。是的,您实际上并没有运行测试,但它们非常适合这种自动化。

    【讨论】:

    • 如果我今天还有票,我完全会为此 +1。如果您需要的只是一次性的,这是一个绝妙的主意。当然,如果这将是长期的,您可能需要考虑像我上面所说的更具技术性的解决方案。但是对于一些简单的事情,我真的会考虑这条途径!
    • 是的,我确实考虑过,但我决定在 python 中实现它 lol 谢谢你的帮助!
    猜你喜欢
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多