2011-02-18 25 views
0

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

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

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

回答

2

使用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) { 
} 
+0

好的,但是这样用简单的字符串写出整个文件,不是吗?我怎么能只发布生成的信息在整个HTML的特定部分?我想过使用标签形式来确切知道它应该去哪里...... – Bombillazo 2011-02-18 22:14:18

+0

现在,`data`对象包含一些文本。你将不得不做一些HTML处理来提取你想发送到网站的字符串,并发布它们。您必须查看带有文本框的页面才能看到要发布的网址。 – corsiKa 2011-02-18 22:17:05

1

最好的办法是使用专为自动测试设计的框架,如Selenium/WebDriverHtmlUnit。是的,你实际上并没有运行测试,但是对于这种自动化来说它们工作得很好。