我有一个邮件系统地址http://mail.dongying.cn/index.php,这是一个Internet上的邮件系统,在这个页面中输入用户名和密码就可以登录,如果用户名或密码错误,则有错误提示:
<form name=login method=post action=http://mail.dongying.cn/index.php>
用户名:
<input name=F_email type=text size="15">
<input type=hidden name=F_domain value=dongying.cn>
密 码:
<input type=password name=F_password size="15">
<input type=submit name=action value="登录">
</form>能否实现如下功能:在我自己的程序里(不是在邮件系统的登录页),在jsp页面上让用户输入用户名、密码,在自己的处理程序里进行验证,如果在上面的邮件系统里有这个用户,则允许用户进行某些操作,否则,给出提示信息。
我原来的思路如下:生成一个URL类对象:
URL url = new URL("http://mail.dongying.cn/index.php");
把用户输入的用户名、密码等表单数据发送到服务器,并获得url链接的输入流,分析服务器应答信息,判断是否登录成功。可是这样不行,我的测试代码如下:public class Anytest{
private String urlStr = "http://mail.dongying.cn/index.php";
private String email;
private String domain = "dongying.cn";
private String password;
private String arg1 = "F_email";
private String arg2 = "F_domain";
private String arg3 = "F_password";
public String doPost(){
try{
URL url = new URL(urlStr);
URLConnection urlCon = url.openConnection();
urlCon.setDoOutput(true);
PrintWriter out = new PrintWriter(urlCon.getOutputStream());
out.print(arg1);
out.print('=');
out.print(URLEncoder.encode(getEmail()));
out.print('&');
out.print(arg2);
out.print('=');
out.print(URLEncoder.encode(domain));
out.print('&');
out.print(arg3);
out.print('=');
out.print(URLEncoder.encode(getPassword()));
out.close();
BufferedReader in;
StringBuffer response = new StringBuffer();
in = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
String line;
while((line=in.readLine())!=null){
response.append(line+"\n");
}
in.close();
return response.toString();
}
catch(IOException e){
e.printStackTrace();
}
return "";
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//***************
public static void main(String[] args){
Anytest test = new Anytest();
test.setEmail("any");
test.setPassword("any");
System.out.println(test.doPost());
}
}
<form name=login method=post action=http://mail.dongying.cn/index.php>
用户名:
<input name=F_email type=text size="15">
<input type=hidden name=F_domain value=dongying.cn>
密 码:
<input type=password name=F_password size="15">
<input type=submit name=action value="登录">
</form>能否实现如下功能:在我自己的程序里(不是在邮件系统的登录页),在jsp页面上让用户输入用户名、密码,在自己的处理程序里进行验证,如果在上面的邮件系统里有这个用户,则允许用户进行某些操作,否则,给出提示信息。
我原来的思路如下:生成一个URL类对象:
URL url = new URL("http://mail.dongying.cn/index.php");
把用户输入的用户名、密码等表单数据发送到服务器,并获得url链接的输入流,分析服务器应答信息,判断是否登录成功。可是这样不行,我的测试代码如下:public class Anytest{
private String urlStr = "http://mail.dongying.cn/index.php";
private String email;
private String domain = "dongying.cn";
private String password;
private String arg1 = "F_email";
private String arg2 = "F_domain";
private String arg3 = "F_password";
public String doPost(){
try{
URL url = new URL(urlStr);
URLConnection urlCon = url.openConnection();
urlCon.setDoOutput(true);
PrintWriter out = new PrintWriter(urlCon.getOutputStream());
out.print(arg1);
out.print('=');
out.print(URLEncoder.encode(getEmail()));
out.print('&');
out.print(arg2);
out.print('=');
out.print(URLEncoder.encode(domain));
out.print('&');
out.print(arg3);
out.print('=');
out.print(URLEncoder.encode(getPassword()));
out.close();
BufferedReader in;
StringBuffer response = new StringBuffer();
in = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
String line;
while((line=in.readLine())!=null){
response.append(line+"\n");
}
in.close();
return response.toString();
}
catch(IOException e){
e.printStackTrace();
}
return "";
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//***************
public static void main(String[] args){
Anytest test = new Anytest();
test.setEmail("any");
test.setPassword("any");
System.out.println(test.doPost());
}
}
可目前得到的响应信息打印出来是:
<body>
<form name=login method=post action=login.php>
<input type=hidden name=F_tm value="1143184332">
<input type=hidden name=F_email value="any">
<input type=hidden name=F_domain value="dongying.cn">
<input type=hidden name=F_password value="any">
<input type=hidden name=action value="1">
</form>
<script>
document.login.submit();
</script>
</body>不管用户名、密码正确与否,响应信息都基本不变,只是F_email和F_password元素的value属性有所变化,这样就不能实现我原来的功能了。请问,各位大侠,能否通过URL类发送表单数据,并获得登录成功与否的响应信息?