把黄鸟hcy请求转换为autojs请求
牙叔教程 简单易懂
为什么做
有人用黄鸟抓了请求之后, 发现是PUT请求, 就不会搞了,
一般用户都只用过http.get, http.post, http.json,
用PUT的很少, 并且aj官方文档也没有PUT这个API,
所以, 我们一键转换, 把hcy的PUT转换成autojs的PUT
怎么做
1. 分析hcy的请求报文格式
PUT /userAdvertisingRecord HTTP/1.1
user-agent: Dart/2.14 (dart:io)
accept: application/json
accept-encoding: gzip
content-length: 63
host: aaa.bbb.com
authorization: Bearer eyJhbGci_MJmde-u4u6-g
content-type: application/json{"companyId":"88405824","id":"8100","watchTime":16}
分为三个部分
Request-Line
请求方法 请求URI HTTP 协议版本
PUT /userAdvertisingRecord HTTP/1.1
Request Header Fields
键值对的格式
user-agent: Dart/2.14 (dart:io)
accept: application/json
accept-encoding: gzip
content-length: 63
host: aaa.bbb.com
authorization: Bearer eyJhbGci_MJmde-u4u6-g
content-type: application/json
Message Body
{"companyId":"88405824","id":"8100","watchTime":16}
2. 读取hcy文本内容, 提取Request-Line, Request Header Fields, Message Body
let content = files.read(files.path("./http_req_001.hcy"));
let lines = content.split("\r\n");
let requestLine = lines[0];
log(requestLine);
let emptyLineIndex;
var len = lines.length;
for (var i = 0; i < len; i++) {if (lines[i] === "") {emptyLineIndex = i;break;}
}
let requestHeaderFields = lines.slice(1, emptyLineIndex);
log(requestHeaderFields);
let messageBody = lines[emptyLineIndex + 1];
log(messageBody);
3. 拼凑url
let host = "";
len = requestHeaderFields.length;
for (var i = 0; i < len; i++) {let kv = requestHeaderFields[i].split(": ");if (kv[0] === "host") {host = kv[1];break;}
}
let url = host + requestLine.split(" ")[1];
log(url);
4. 整理headers
let headers = {};
len = requestHeaderFields.length;
for (var i = 0; i < len; i++) {let kv = requestHeaderFields[i].split(": ");headers[kv[0]]=kv[1];
}
log(headers);
5. autojs的http模板替换
模板
let r = http.request(URL, {method: METHOD,body: JSON.stringify(BODY),headers: HEADERS,}).body.string();
log(r);
变量映射
URL --> url
METHOD --> requestLine.split(' ')[0]
BODY --> messageBody ? JSON.parse(messageBody) : ''
HEADERS --> headers
总结
以上就是黄鸟hcy请求转换为autojs请求的关键代码,
转换方法最重要的是要搞清楚, http报文格式,
然后就是字符串替换.
环境
Autojs版本: 9.0.10
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
— 牙叔教程
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途
bilibili
牙叔教程
微信公众号 牙叔教程
QQ群
747748653
完整源码
把黄鸟hcy请求转换为autojs请求相关推荐
- POST请求转换为其他请求失效 input type=“hidden“ name=“_method“ value=“put“无效
在使用Springboot进行RESTFUL风格开发时需要将表单数据以其他请求提交. 直接在表单中添加 <input type="hidden" name="_me ...
- java面试题8 牛客:在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象
在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象 A Servlet对象 B HTTP服务器 C Web容器 D JSP网页 首先我们来看看web程序的 ...
- get请求报500_http请求和响应的全过程
写在最前面的话: 最近心里总感觉怪怪的,也不知道为什么.直到今天我才发现我的公众号上有这么多用户呢.一个月因为种种原因没有更文章啦,心里总是过意不去,久等啦各位.以后尽我最大的努力更文章,哈哈哈!整理 ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...
原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...
- Python爬虫——2.底层操作和请求头、请求代理以及cookie操作
本文章此节主要讲解: ·爬虫程序urllib2模块底层操作: ·请求头的设置和添加: ·请求代理的种类和类型: ·关于cookie的操作(手动添加/程序自动获取) 一.爬虫底层操作和请求头的设置 1. ...
- Ajax请求,JQuery发送请求,Axios请求,Fetch请求总结
常见的请求方式 1.Ajax请求 定义: 同步与异步的区别: Ajax的工作原理: 实现AJAX的基本步骤: Get请求: Post请求: 2.JQuery发送请求 Get请求: Post请求: 3. ...
- XHR请求与fetch请求
文章目录 一.XMLHttpRequest对象 1.使用XHR (1).代码示例 (2).GET请求 (3).POST请求 (4).注意事项 2.XMLHttpRequest Level 2 (1). ...
- HTTP请求行、请求头、请求体详解
HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEAD. ...
- Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题)
Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题) 1.Request(请求) Request继承体系 要想了解RequestFacade中都提供了哪些方法, ...
最新文章
- GMS(cts、gsi、vts、gts、ctsv)问题总结
- 使用Xcode和Instruments调试解决iOS内存泄露【转】
- Fisher 线性分类器--转
- python读文件的三个方法read()、readline()、readlines()详解
- closewait一直不释放_机床为什么要释放应力?怎么释放应力才好?
- SpringMVC中拦截/和拦截/*的区别
- SpringBoot2.1.15(26) WebFlux快速上手——响应式Spring的道法术器
- python list tuple区别_Python list、tuple、dict区别
- ucc编译器(x86移植)
- Creating Options Pages
- 从 C++98 到 C++17,元编程是如何演进的? | 技术头条
- Linux之SELinux自主访问控制系统
- Ubuntu 16.04静态IP设置
- html画布画五环,奥运五环(canvas标签学习)
- 怎样才能走进区块链行业?
- VBA-循环语句之For Each..Next
- 开源中国广州源创会分享
- 无线信号的RSS和CSI的理解
- 微PE装Win10详细教程:UEFI+GPT方式
- 电子商务公司怎么赚钱