把黄鸟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文档, 最后才是群里问问

--- 牙叔教程


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途

相关文章
|
11月前
|
JSON 小程序 前端开发
小程序模拟请求服务器json数据
小程序模拟请求服务器json数据
252 0
|
17天前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
47 2
|
4月前
|
API
使用axios发送请求的格式是什么?示例代码
使用axios发送请求的格式是什么?示例代码
26 0
|
1月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
24 1
|
3月前
|
缓存 安全 Web App开发
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
|
4月前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
70 5
|
JSON 小程序 数据格式
零基础学小程序003----请求服务器数据,请求后台json数据
零基础学小程序003----请求服务器数据,请求后台json数据
234 0
|
JSON 数据格式
调用后端接口时响应的json数据里面中文变成问号
调用后端接口时响应的json数据里面中文变成问号
203 0
调用后端接口时响应的json数据里面中文变成问号
|
Shell 程序员 开发工具
711.踩坑指南:如何验证http协议的请求与响应格式?
711.踩坑指南:如何验证http协议的请求与响应格式?
117 0
|
编解码 JSON 网络安全
在发起网络请求时可能会需要对URLString进行编码
在发起网络请求时可能会需要对URLString进行编码
104 0
在发起网络请求时可能会需要对URLString进行编码