任何人都可以帮我弄清楚为什么这段代码不起作用?它应该登录HTS,但它不起作用。它没有给我任何错误消息或任何东西,根本没有结果。任何帮助将不胜感激。
以下是代码:
import java.net.*;
import java.io.*;
public class Login {
private static URL URLObj;
private static URLConnection connect;
public static void main(String[] args) {
try {
URLObj = new URL("http://www.hackthissite.org/user/login");
connect = URLObj.openConnection();
connect.addRequestProperty("REFERER", "http://www.hackthissite.org");
connect.setDoOutput(true);
}
catch (MalformedURLException ex) {
System.out.println("The URL specified was unable to be parsed or uses an invalid protocol. Please try again.");
System.exit(1);
}
catch (Exception ex) {
System.out.println("An exception occurred. " + ex.getMessage());
System.exit(1);
}
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connect.getOutputStream()));
writer.write("username=BrandonHeat&password=**********&btn_submit=Login");
writer.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(connect.getInputStream()));
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {
System.out.println(lineRead);
}
reader.close();
}
catch (Exception ex) {
System.out.println("There was an error reading or writing to the URL: " + ex.getMessage());
}
}
}
答案 0 :(得分:0)
我只是猜测,但是URLConnection的文档表明你必须在设置参数后连接:
1.通过调用openConnection方法创建连接对象 一个URL 2.操作设置参数和一般请求属性 3.使用connect建立与远程对象的实际连接 方法。
4.远程对象变得可用。标题字段和内容 可以访问远程对象 ...
使用以下方法 访问标题字段和 连接后的内容 到远程对象:
- getContent
- getHeaderField
- getInputStream
- 的getOutputStream
编辑:
你不能用URL中的参数打开URL(即http://www.hackthissite.org/user/login?username=BrandonHeat&password=xxxxx&btn_submit=Login),还是设置为标题?
另外,在connect()之后,如果你执行getContent()会得到什么?
编辑:有一个流程here的说明。
问候
纪尧姆