qq_37471629 2017-04-18 06:28 采纳率: 0%
浏览 722

模拟登录教务在线,为什么进去的不是登录后的界面,而是登录前的界面,求大神帮忙,毕业论文需要

package loginApp;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class ImitateLogin {

public static void main(String[] args) {
    String userName = "1307012027";         // 本人学号
    String password = "360731*********";    // 本人密码
    String loginUrl = "http://jwc.jxnu.edu.cn/Default_Login.aspx?preurl=";
    String dataUrl = "http://jwc.jxnu.edu.cn";
    HttpClientLogin(userName, password, loginUrl, dataUrl);
}

private static void HttpClientLogin(String userName, String password,
        String loginUrl, String dataUrl) {
    HttpClient httpClient = new HttpClient();
    httpClient.getParams().setParameter(
            HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
    PostMethod postMethod = new PostMethod(loginUrl);

    NameValuePair[] postData = { new NameValuePair("StuNum", userName),
            new NameValuePair("Password", password) };
    postMethod.setRequestBody(postData);

    try {

        httpClient.getParams().setCookiePolicy(
                CookiePolicy.BROWSER_COMPATIBILITY);
        httpClient.executeMethod(postMethod);
        Cookie[] cookies = httpClient.getState().getCookies();
        StringBuffer stringBuffer = new StringBuffer();
        for (Cookie c : cookies) {
            stringBuffer.append(c.toString() + ";");
        }

        GetMethod getMethod = new GetMethod(dataUrl);
        getMethod.setRequestHeader("Cookie", stringBuffer.toString());
        postMethod.setRequestHeader("Host", "http://jwc.jxnu.edu.cn");
        postMethod.setRequestHeader("Referer", "http://jwc.jxnu.edu.cn/Default_Login.aspx?preurl=");
        postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
        httpClient.executeMethod(getMethod);

        String result = getMethod.getResponseBodyAsString();
        System.out.println(result);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

  • 写回答

1条回答 默认 最新

  • u010500435 2017-04-18 09:29
    关注

    HttpClient 会自动管理它的cookie。 如果登录成功的话,直接该对象访问数据 可以直接访问的。。 检查下 是否登录请求成功。

    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧