您的位置:首页 > 理论基础 > 计算机网络

用HttpClient模拟登录网站二(获取网页信息)

2009-09-14 14:07 671 查看
1.关于上一篇遗留一个问题--解决获取网页信息的乱码问题

HttpClient client=new HttpClient();
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,
"gbk");//设置编码格式


2.对需要输入用户名和密码的网站模拟登陆(下面简称验证登录)

先贴代码

private PostMethod doPostMehtod51(String username, String password,
String url) {
HttpClient client = new HttpClient();
String loginUrl = url;
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,
"gbk");
PostMethod pMethod = new PostMethod(loginUrl);
NameValuePair[] postData = { new NameValuePair("username", username),
new NameValuePair("userpwd", password) };
pMethod.setRequestBody(postData);
try {
client.executeMethod(pMethod);
Cookie[] cookies = client.getState().getCookies();// 获得登录的cookie
if (CommonResume.getCookies() != null) {
CommonResume.setCookies(null);
CommonResume.setCookies(cookies);// 保存cookie
} else {
CommonResume.setCookies(cookies);
}
} catch (Exception e) {
e.printStackTrace();
}
pMethod.releaseConnection();
return pMethod;
}


讲解:

验证登录肯定需要用户密码,在网站上我们是点击登录按钮登录,模拟登陆实质是一样的,利用Post方法提交参数来登录。

NameValuePair[] postData = { new NameValuePair("username", username),

new NameValuePair("userpwd", password) };//把用户名、密码保存到参数数组里面

pMethod.setRequestBody(postData);//设置请求的主题

username,userpwd 等是通过抓包工具获取的。

3.模拟登陆前程无忧

String loginUrl = "http://my.51job.com/my/My_Pmc.php";
PostMethod pm = doPostMehtod51(username, password, loginUrl);
Header header = pm.getResponseHeader("location");
String uri = header.getValue();
if (loginUrl.equals(uri)) {
state = true;
}


post提交以后如果想跳转到其他页面,用第一篇讲到的GetMethod("url");来实现跳转。

登录之后如要获取html--pMethod.getResponseBodyAsString();

经过以上步骤可以完成绝大部分的模拟登录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: