题目:在A页面登录后,重定向到A页面,然后访问B页面,header中带一指定内容"Content":"2018",然后从response中读取answer的值。

主要分三步分,首先在A页面发送POST请求:

String url = "http://192.168.1.105/";
String responseMsg = "";
byte[] responseBody = null;
HttpClient httpclient = new HttpClient();
httpclient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
httpclient.getParams().setParameter("http.protocol.single-cookie-header", true);
PostMethod httpPost = new PostMethod(url);
httpPost.setRequestHeader("ContentType", "application/xml;charset=utf-8");
String cookie = ".AspNetCore.Antiforgery.2asieuWmzUU=CfDJ8LzDUhYKe7pEsWY4r-H8oTev6zo3ttt4qg9Zo6xNEWNET1tpSwNSHS9SQf2xe1p9witfHgmLnLx1HKCvGsynU6Sv-YMB4u_Pbh0ZAQRoEAJ7KVGH09LsqrBowNV1uh6iU71ealeplU4Yps3td_dBh0I";
httpPost.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
httpPost.setRequestHeader("Accept-Encoding", "gzip, deflate");
httpPost.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.9");
httpPost.setRequestHeader("Cache-Control", "max-age=0");
httpPost.setRequestHeader("Connection","Keep-Alive");
httpPost.setRequestHeader("Content-Length", "274");
httpPost.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpPost.setRequestHeader("Host", "192.168.1.105");
httpPost.setRequestHeader("Origin", "192.168.1.105");
httpPost.setRequestHeader("Origin", "http://192.168.1.105");
httpPost.setRequestHeader("Referer", "http://192.168.1.105/");
httpPost.setRequestHeader("Upgrade-Insecure-Requests", "1");
httpPost.setRequestHeader("User-Agent", Constants.USER_AGENT);
httpPost.setRequestHeader("Cookie", cookie);//ltpatoken+sessionid
httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(6000000);
httpclient.getHttpConnectionManager().getParams().setSoTimeout(6000000);
try {
httpPost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler(3, false));
NameValuePair certsn=new NameValuePair("Input.Email", "yxteng@126.com");
NameValuePair certinfo=new NameValuePair("Input.Password", "&wxZC3`jBqo)'qtX");
NameValuePair subdn=new NameValuePair("__RequestVerificationToken", "CfDJ8LzDUhYKe7pEsWY4r-H8oTdN9wZgh60Tje5CyRR89Ps2Y67XUzTS7MdnpqmYWOjxqHVytkJq_cV3z8vwvsK6729LWWH1MRlV1QF6tqWRiOGEphxLKkbUxoKQfVEVRRjXV5LTKZafolsgJyOp0YbKnow");
NameValuePair ramcode=new NameValuePair("Input.RememberMe", "false");
httpPost.setRequestBody(new NameValuePair[]{certsn,certinfo,subdn,ramcode});
LogUtils.info("开始登陆...");
int statusCode = httpclient.executeMethod(httpPost);
Cookie[] cookies = httpclient.getState().getCookies();
cookie="";
for (int i = 0; i < cookies.length; i++) {
cookie+=cookies[i].toString();
if(i!=cookies.length-1){
cookie+=";";
}
LogUtils.info(cookies[i].getName()+":"+cookies[i].getValue());
}
LogUtils.info("COOKIE:"+cookie);
if (statusCode == HttpStatus.SC_OK) {
responseBody = httpPost.getResponseBody();
LogUtils.info("登陆成功"+statusCode);
}
else {
responseMsg = String.valueOf("statusCode:"+statusCode);
LogUtils.error("登陆失败"+statusCode);
}

  然后get方法模拟重定向到本页:

cookie = ".AspNetCore.Antiforgery.2asieuWmzUU=CfDJ8LzDUhYKe7pEsWY4r-H8oTev6zo3ttt4qg9Zo6xNEWNET1tpSwNSHS9SQf2xe1p9witfHgmLnLx1HKCvGsynU6Sv-YMB4u_Pbh0ZAQRoEAJ7KVGH09LsqrBowNV1uh6iU71ealeplU4Yps3td_dBh0I; .AspNetCore.Identity.Application=CfDJ8LzDUhYKe7pEsWY4r-H8oTfyoqahKhxlTHouYjwJDlVmJ6BdZ8pxXvOLoHDu_Ci9kzyy9GKtpRYYF06bLr3flLY6oiM7ZEJRAH-ARkiwchgjVNWPB2STXkc42E-NtLz94J9RVVhluNbN99JUUCdSXKqQgj0MUq4EpB6D4zF-Diu2wkWjhIty8HxLX4-JG6r3X8XvcJnDyqwt4YgWimcJ_SrIsfS4xdem-9zBK4zPJtorPZZwlOah0IYR7hLd7-2TaJxCk_QvQG5GIaAqRc4A-2I8eR5g6irx9SgI0XIBdxEuqpqUn1er5CIf0olBK3VXtzwNEwDTv8AkDqDvOxw7m9kjkEgDrYs3LmgDpjsg5bgiSrCcfoFx_X_ODp7Q-g5dZLOqYZQxD-bMRy3Uwu97JX-nLqtMLKoY0POhSYX17Y_SH4vFgu9e3I8matifsZAuzKIaT4DFrzyhf_ihi1ffxLnIhYnydMuM27RgrMDNq1EUue1Edym4XUhgxJjKOoiMLg_paJ14l85OXu_M51upCNB4568YKARPVJiT0SCFaA61rYoVOpZaexNLQbxc6kxe0jB5BthCVjU00xpt96QeZPU";
LogUtils.info("开始跳转首页...");
url = "http://192.168.1.105/";
GetMethod httpget = new GetMethod(url);
httpget.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
httpget.setRequestHeader("Accept-Encoding", "gzip, deflate");
httpget.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.9");
httpget.setRequestHeader("Cache-Control", "max-age=0");
httpget.setRequestHeader("Connection","Keep-Alive");
httpget.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpget.setRequestHeader("Host", "192.168.1.105");
httpget.setRequestHeader("Referer", "http://192.168.1.105/");
httpget.setRequestHeader("Upgrade-Insecure-Requests", "1");
httpget.setRequestHeader("User-Agent", Constants.USER_AGENT);
httpget.setRequestHeader("Cookie", cookie);//ltpatoken+sessionid
statusCode = httpclient.executeMethod(httpget);
if (statusCode == HttpStatus.SC_OK) {
responseBody = httpget.getResponseBody();
LogUtils.info("跳转V成功"+statusCode);
}
else {
responseMsg = String.valueOf("statusCode:"+statusCode);
LogUtils.error("跳转V失败"+statusCode);
return;
}

  最后访问目标页,header中带上指定内容:

url = "http://192.168.1.105/Problems/HttpRequest";
httpget = new GetMethod(url);
httpget.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
httpget.setRequestHeader("Accept-Encoding", "gzip, deflate");
httpget.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.9");
httpget.setRequestHeader("Cache-Control", "max-age=0");
httpget.setRequestHeader("Connection","Keep-Alive");
httpget.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpget.setRequestHeader("Host", "192.168.1.105");
httpget.setRequestHeader("Referer", "http://192.168.1.105/");
httpget.setRequestHeader("Upgrade-Insecure-Requests", "1");
httpget.setRequestHeader("Content", "2018");//秘钥
httpget.setRequestHeader("User-Agent", Constants.USER_AGENT);
httpget.setRequestHeader("Cookie", cookie);//ltpatoken+sessionid
statusCode = httpclient.executeMethod(httpget);
if (statusCode == HttpStatus.SC_OK) {
Header[] hlist= httpget.getResponseHeaders();
for(Header h:hlist){
LogUtils.info(h.getName()+":"+h.getValue());
}
LogUtils.info("跳转V成功"+statusCode+responseBody);
}
else {
responseMsg = String.valueOf("statusCode:"+statusCode);
LogUtils.error("跳转V失败"+statusCode+responseBody);
return;
}

  在控制台中查看答案即可。

某比赛小记2- 从HTTP请求返回中获得答案的更多相关文章

  1. nodejs中使用http请求返回值为html时乱码问题

    今天用nodejs进行http请求时返回的数据是一个html文件,然后我还是按照以前解析json数据的方法.果不其然报错了:SyntaxError: Unexpected token  in JSON ...

  2. ionic 发送请求返回一直都是404

    在web端调试一直都没有问题,生成app之后发现所有的请求返回的都是404, 断掉wifi和4G之后发送的也是404 原因是未引入插件 解决方法是在根目录下执行一下命令 cordova plugin ...

  3. http请求返回响应码的意思

    HTTP 状态响应码 意思详解/大全 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518. ...

  4. HTTP请求返回状态详解

    当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态代码可以指明具体请求是否已成功,还可以揭示请求失 ...

  5. js:如何在循环异步请求的每次返回中添加想要的值

    先看一个场景 var arr = ["a","b","c"]; for (var i in arr) {         $.get(&qu ...

  6. ajax请求返回数据,模板中的数据处理

    /*ajax请求返回数据,模板中的数据处理*/ function QueryGameAsset(){ var new_start_time=$('#new_start_time').val();//开 ...

  7. postman简单教程,如何在请求中引用上次请求返回的值

    做接口测试,一定会遇到这种情况,需要拿上次请求的值在本次请求中使用,比如,我们去测试一个东西,要去登录才能做其他的操作,需要拿到登录返回数据中的某些字段,比如,token啊等... 如果发一次请求,就 ...

  8. 如何解决http请求返回结果中文乱码

    如何解决http请求返回结果中文乱码 1.问题描述 http请求中,请求的结果集中包含中文,最终以乱码展示. 2.问题的本质 乱码的本质是服务端返回的字符集编码与客户端的编码方式不一致. 场景的如服务 ...

  9. http请求返回响应码及意义

    http 响应码及意义 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 281 ...

随机推荐

  1. 【踩坑】Safari不兼容webpack封装的vue项目

    刚完成 Iblog 博客项目,在 chrome 浏览器调试完后,用 Safari 打开网站,页面一直停留在加载状态. 后来网上说这是 Safari 不支持 ES6 所致. 经过搜索,在 github ...

  2. CF1080D Olya and magical square

    思路: 构造. 实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; ll sum[]; int ...

  3. SVN上传文件过程中出现错误“不知道这样的主机”

    在虚拟机中安装完成VisualSVN Server,并且在本地客户端也安装好了TortoiseSVN,在上传文件到服务器的过程中出现错误“不知道这样的主机”,如下图: 地址https://admin- ...

  4. Azure 8 月新公布

    Azure 8 月新发布:Cosmos DB 每分钟请求单位,存储的托管磁盘及促销,高级和标准磁盘存储大尺寸磁盘,高级磁盘存储小尺寸磁盘. Azure Cosmos DB:每分钟请求单位为您降低成本, ...

  5. CodeForces 219D Choosing Capital for Treeland (树形DP)

    题意:给一个树形图,n个节点,n-1条有向边,要求选一个节点作为根,使需要改变方向的边的数目最少.并输出所有可能作为根的点. 思路: 先随便一个点进行DFS,计算将每棵子树的边全部往下时,所需要的费用 ...

  6. 洛谷 P1334 瑞瑞的木板==P2664 【题目待添加】

    题目描述 瑞瑞想要亲自修复在他的一个小牧场周围的围栏.他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每根的长度为整数Li(1≤Li≤50,000).于是,他神奇地买了一根足够长的木板,长度为 ...

  7. Google Colab的一些注意事项

    1.执行命令行前面加! 当我们使用python解释器时,我们需要不停地在命令行和IDE 之间切换,当我们需要使用命令行工具时.不过,Jupyter Notebook给了我们在notebook中运行sh ...

  8. webpack之postcss集成

    项目 为了 兼容各个浏览器,需要加各种 c3前缀,如果手动的加肯定 相对比较麻烦,但是现在有webpack,gulp之类的 工具可以自动给我们加上,可以说效率上加速不少.如果 配置中 做个happyp ...

  9. python:加密模块

    加密:import hashlib # import md5 #python2 中可以直接引入md5,3中没有 #md5 #md5加密是不可逆的,即不能解密. #只要用MD5加密,结果都是一样的,不区 ...

  10. 第1节 flume:13、14、更多flume案例一,通过拦截器实现不同类型的数据区分

    1.6.flume案例一 1. 案例场景 A.B两台日志服务机器实时生产日志主要类型为access.log.nginx.log.web.log 现在要求: 把A.B 机器中的access.log.ng ...