1

我正在尝试登录以下网站: http: //www.deeproute.com。登录表单字段如下:

<input type="hidden" name="cookieexists" value="false">
<input size=12 type=name name=name>
<input size=12 type=password name=password>
<input type=submit name=subbera value="Login">

这是我尝试使用 HttpClient 登录并使用 Jsoup 解析生成的 html 的代码。不幸的是,这会以相同的未登录状态返回页面的原始 html。

        HttpResponse res = null;
        Document homePage = null;
        HttpEntity entity = null;

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.deeproute.com");
        String html = null;

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
        nameValuePairs.add(new BasicNameValuePair("cookieexists", "false"));
        nameValuePairs.add(new BasicNameValuePair("name", username));
        nameValuePairs.add(new BasicNameValuePair("password", pass));

        try {
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            res = httpclient.execute(httppost);

        } catch (IOException e) {

            e.printStackTrace();
        }

        if (res != null) {

            try {
                html = EntityUtils.toString(res.getEntity());
                homePage = Jsoup.parse(html);
            } catch (ParseException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

我能做些什么来解决这个问题?

4

1 回答 1

1

仅使用 jSoup 代码的工作解决方案。

  • 步骤 1. 获取登录表单
  • 第 2 步。发布带有 cookie 和所有参数的表单。

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

    Connection.Response loginForm = Jsoup.connect("http://deeproute.com/deeproute/default.asp")
            .method(Connection.Method.GET)
            .execute();

    Document document = Jsoup.connect("http://deeproute.com/deeproute/default.asp")
            .data("cookieexists", "false")
            .data("name", "username")
            .data("password", "pass")
            .data("subbera", "Login")
            .cookies(loginForm.cookies())
            .post();

}
于 2013-04-20T22:37:22.320 回答