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