Почему HttpClient остается на странице входа в систему после выполнения метода post? - PullRequest
0 голосов
/ 19 августа 2011

Я пытаюсь использовать HttpClient для входа на этот сайт:

http://softmanage.hengxd.com/index.asp

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css/base.css" rel="stylesheet" type="text/css" />

<title>Application Management Platform</title>
<style type="text/css">
<!--
.STYLE1 {
    font-size: 16px;
    font-weight: bold;
}
-->
</style>
</head>

<script>
<!--
function OnSubmitForm()
{
    if(document.getElementById("username").value=="")
    {
        alert("username must not be empty");
        document.getElementById("username").focus();
        return;
    }
    if(document.getElementById("userpass").value=="")
    {
        alert("password must not be empty");
        document.getElementById("userpass").focus();
        return;
    }
    document.getElementById("lform").submit();
}
-->
</script>
<body >
<table width="100%" height="500" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" valign="middle">
    <form name="lform" id="lform" action="index.asp?action=1" method="post" style="padding:0; margin:0">
    <div style="width:416px; height:229px; background:url(images/lbg.jpg) center no-repeat;">
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="40" colspan="2" align="center"><span class="STYLE1">Login</span></td>
          </tr>
        <tr>
          <td width="35%" height="58" align="right">Username:</td>
          <td width="65%" height="58" align="left"><input type="text" name="username" id="username" /></td>
        </tr>
        <tr>
          <td height="58" align="right">Password:</td>
          <td height="58" align="left"><input type="password" name="userpass" id="userpass" /></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><img src="images/lbt.jpg" onclick="OnSubmitForm();"/></td>
          </tr>
      </table>
    </div>
    </form>
    </td>
  </tr>
</table>
</body>
</html>

Для входа на сайт я использовал следующий код Java:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class HttpClientText {

    public static void main(String [] args) throws Exception {

        HttpClient client = new HttpClient();
        client.getHostConfiguration().setHost("http://softmanage.hengxd.com/index.asp", 8081);

        PostMethod post = new PostMethod("http://softmanage.hengxd.com/index.asp");

        NameValuePair username = new NameValuePair("username", "test");
        NameValuePair password = new NameValuePair("userpass", "12345"); 

        post.setRequestBody(new NameValuePair[] { username, password });

        client.executeMethod(post);

        String responseString = new String(post.getResponseBodyAsString().getBytes("utf-8"));

        System.out.println(responseString);
    }
}

Я ожидаю, что он распечатает страницу после входа в систему, но на самом деле он все еще печатает исходную страницу, то есть HTML, который я перечислил выше. Может ли кто-нибудь найти ответ на этот вопрос? Спасибо!

1 Ответ

2 голосов
/ 19 августа 2011

В форме написано action="index.asp?action=1.Если я использую это, я получаю перенаправление на lansel.asp.

        PostMethod post = new PostMethod("http://softmanage.hengxd.com/index.asp?action=1");
...