cnzz 模拟请求登录(传入url get data ) demo
/**
*
* @Title: init
* @Description: TODO 初始化httpclien
* @param url
* cnzz对应的链接
* @param password
* cnzz 对应的密码
* @return
*
* @return: HttpClient
*/
public static String init(HttpClient httpclient, String url, String password) {
// 建立 httpPost对象
HttpPost httpPost = new HttpPost(url);
// 建立一个NameValuePair数组,用于存储欲传送的参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("password", password));
String locationUrl = "";
try {
// 设置为utf-8编码
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse response = httpclient.execute(httpPost);
// 获取 重定向后的url
locationUrl = response.getLastHeader("Location").getValue();
// 设置cookie
List<Cookie> cookies = ((AbstractHttpClient) httpclient).getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println(cookies.get(i).getName() + ":" + cookies.get(i).getValue() + "-----");
}
}
// 获得返回体
HttpEntity entity = response.getEntity();
// 获得体内容
String responseHtmQueryPage = IOUtils.toString(entity.getContent());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return locationUrl; } /**
*
* @Title: sendRequest
* @Description: TODO 根据登陆后跳转的链接发送 第二次请求
* @param httpclient
* @param locationUrl
* 登陆后重定向的链接
*
* @return: url
*/
public static String sendTwoRequest(HttpClient httpclient, String locationUrl) {
String url = "";
try {
// 发送get请求
HttpGet httpGet = new HttpGet(locationUrl);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
String responseHtmQueryPage = IOUtils.toString(entity.getContent());
Document document = Jsoup.parse(responseHtmQueryPage);
url = "https://web.umeng.com/" + document.select("script").html().split("'")[1];
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return url;
} /**
*
* @Title: sendRequest
* @Description: TODO 发送第三次请求
* @param httpclient
* @param url
* @return
*
*
*/
public static void sendThreeRequest(HttpClient httpclient, String url) { try {
// 发送get请求
HttpGet httpGet = new HttpGet(url);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
String responseHtmQueryPage = IOUtils.toString(entity.getContent()); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } /**
*
* @Title: sendFourRequest
* @Description: TODO 发送第四次请求 及要获取的真正数据的请求
* @param httpclient
* @param realUrl
* @return
*
* @return: String
*/
public static String sendFourRequest(HttpClient httpclient, String realUrl) {
// 发送get请求
String responseHtmQueryPage = "";
try {
HttpGet httpGet = new HttpGet(realUrl); HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
responseHtmQueryPage = IOUtils.toString(entity.getContent());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return responseHtmQueryPage; }
cnzz 模拟请求登录(传入url get data ) demo的更多相关文章
- C#模拟请求,模拟登录,Cookie设置、文件上传等问题汇总
由于业务需求,最近需要模拟完成登陆某个网站,并上传所需要的文件.在开发途中,遇到了很多问题,现在,就我遇到的一些问题及解决办法说明如下,希望对遇到同样问题的人有所帮助.因为技术有限,可能有些内容并不完 ...
- java.net.URL 模拟用户登录网页并维持session
java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...
- java.net.URL 模拟用户登录网页并维持session【转】
java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...
- 根据传入url请求,返回json字符串
/** * 根据传入url请求,返回json字符串 * @param url * @return * @throws UnsupportedEncodingException */ public st ...
- cookielib和urllib2模块相结合模拟网站登录
1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对 ...
- 转载:curl 模拟请求
一般情况下我们会在网页上请求后台接口,但是对于需要进行多次测试的人来说,每一次都要在网页上模拟请求,是存在很大局限性的.因此,我们需要学会模拟请求,以达到跟实际请求一样的效果. 1. curl的用法 ...
- python 模拟豆瓣登录(豆瓣6.0)
最近在学习python爬虫,看到网上有很多关于模拟豆瓣登录的例子,随意找了一个试了下,发现不能运行,对比了一下代码和豆瓣网站,发现原来是豆瓣网站做了修改,增加了反爬措施. 首先看下要模拟登录的网站: ...
- curl 模拟请求
https://www.jianshu.com/p/7965c56c5a2e ********************************************* 一般情况下我们会在网页上请求后 ...
- python模拟自动登录网站(urllib2)
不登录打开网页: import urllib2 request = urllib2.Request('http://www.baidu.com') response = urllib2.urlopen ...
随机推荐
- 关于windows完成端口(IOCP)的一些理解
本人很多年前接触完成端口以来,期间学习和练习了很多次,本以为自己真正地理解了其原理,最近在看网狐的服务器端源码时又再一次拾起完成端口的知识,结果发现以前理解的其实很多偏差,有些理解的甚至都是错误的.网 ...
- python爬虫入门(2)re模块-正则表达式
正则表达式 search //匹配第一次遇到符合规则的 匹配IP地址 import re re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3 ...
- linux vim 命令使用
基本上vim可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode) 模式切换方法 在命令模式输入“i”,进入插入模式 ...
- vue-route(三)后台管理路由配置
在一个后台管理的项目中,关于路由的配置, 我们需要实现的一个布局是header,aside,main三部分,后期还可能添加footer部分,实现的需求是请求数据时,局部的刷新,这个时候我们就需 ...
- 程序设计入门-C语言基础知识-翁恺-第四周:循环控制-详细笔记(四)
目录 第四周:循环控制 4-1 for循环 4-2 循环控制 各运算符优先级(图) 4-3 课后习题 4-4 讨论题 第四周:循环控制 4-1 for循环 for循环像一个计数循环:设定一个计数器,初 ...
- C#与sqlserver开发问题
最近不停的在考虑C#读取数据性能问题第一种使用ado拼接sql连接数据库第二种使用ado调用存储过程第三种使用entityframework加linq第四种使用反射IList<T> 1.从 ...
- LOJ107. 维护全序集【树状数组维护全序集】
题目描述 这是一道模板题,其数据比「普通平衡树」更强. 如未特别说明,以下所有数据均为整数. 维护一个多重集 S ,初始为空,有以下几种操作: 把 x 加入 S 删除 S 中的一个 x,保证删除的 x ...
- LOJ2325. 「清华集训 2017」小 Y 和恐怖的奴隶主【矩阵快速幂优化DP】【倍增优化】
LINK 思路 首先是考虑怎么设计dp的状态 发现奴隶主的顺序没有影响,只有生命和个数有影响,所以就可以把每个生命值的奴隶主有多少压缩成状态就可以了 然后发现无论是什么时候一个状态到另一个状态的转移都 ...
- BZOJ2342 Shoi2011 双倍回文 【Manacher】
BZOJ2342 Shoi2011 双倍回文 Description Input 输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容. Output 输 ...
- 《DSP using MATLAB》示例 Example 6.25
代码: % x = [-0.9, 0.81]; [y, L, B] = QCoeff(x, 3) % Unquantized parameters r = 0.9; theta = pi/3; a1 ...