求教大神 帮我看看哪儿错了好吗?
@天体图 你好,帮我看看代码好吗:
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
try {
HttpClient httpclient = new DefaultHttpClient();
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 创建SSLSocketFactory对象
SSLSocketFactory ssf = new SSLSocketFactory(sslContext);
httpclient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", 443, ssf));
HttpPost post = new HttpPost("https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN");
//Header cookie = new BasicHeader("Cookie", "ac=1,016,001; pt2gguin=o0503530115; RK=wD5qAuCPls; ptcz=2803611a23e59b710519c46b792d8df22cab01e413ca7b38e70465b1d6bc1df0; uin_cookie=1308300842; euin_cookie=70E0A746F5C21CF73A8B45D76B3098B3D71ECF8CF7C1D178; pgv_pvid=7669182920; cert=yAk4mLW8EJ02hefUt3BrpDoZSVPxpYmY");
Header cookie = new BasicHeader("Cookie", "noticeLoginFlag=1");
Header accept = new BasicHeader("Accept","*/*");
Header enc = new BasicHeader("Accept-Encoding","gzip, deflate");
Header lan = new BasicHeader("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
Header contentType = new BasicHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
Header agent = new BasicHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:38.0) Gecko/20100101 Firefox/38.0");
Header referer = new BasicHeader("Referer","https://mp.weixin.qq.com/");
Header host = new BasicHeader("Host","mp.weixin.qq.com");
Header[] headers = {cookie,accept,enc,lan,contentType,agent,referer,host};
post.setHeaders(headers);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("username", username));
nvps.add(new BasicNameValuePair("pwd", pwd));
nvps.add(new BasicNameValuePair("f", "json"));
nvps.add(new BasicNameValuePair("imgcode", ""));
post.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
// 发送请求
HttpResponse response = httpclient.execute(post);
// 输出返回值
java.io.InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = printAll(br);
//printAll(br);
br.close();
String token = line.split("token=")[1].split(""")[0];
HttpGet get = new HttpGet("https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token="+token);
response = httpclient.execute(get);
// 输出返回值
is = response.getEntity().getContent();
br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
//printAll(br);
//br.close();
res.getWriter().write(line);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
先提高下问问题的技巧,谢谢
你还是使用 htmlunit 好些 ,可以模拟 浏览器触发js,比较方便
我绝对不是大神,可能是我的博文标题让你产生了误解,我说的模拟登录是指“不用浏览器、用代码”实现登录并获取消息(因为不登录获取不了公众平台上的消息啊!),所以叫模拟登录。而你的是在你网站上点一个按钮,你后台访问了一下网址,然后想要前台的也跳转到这个网址,我说的那些是没法实现的,不好意思。你可以在站内问问真正的大神们