我有一个邮件系统地址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());
}
}

解决方案 »

  1.   

    补充:上面说的邮件系统和我们做的程序是给同一个客户的,客户要求我们的某个功能只允许邮件系统用户可以使用,所以在我们的程序里必须验证是否邮件系统用户,但邮件系统没有提供接口给我们判断一个用户是否存在,因此原来想通过URL发送表单信息,并获取响应信息。本以为如果给出正确的用户名、密码,那么响应信息里就会是登录成功的页面源码,如果用户名或者密码有误,响应信息里会有错误提示页面源码,这样就可以分析响应信息判断给出的用户是否是邮件系统用户。
    可目前得到的响应信息打印出来是:
    <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类发送表单数据,并获得登录成功与否的响应信息?
      

  2.   

    留下你的E-mail我给你发个例子
      

  3.   

    private String urlStr = "http://mail.dongying.cn/login.php";