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

--- 牙叔教程


声明

部分内容来自网络

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

相关文章
接口测试——fiddler对soapui请求返回信息抓取
原文:接口测试——fiddler对soapui请求返回信息抓取 背景:接口测试的时候,需要对接口的请求和返回信息进行查阅或者修改请求信息,可利用fiddler抓包工具对soapui的请求数据进行抓取或修改。
1461 0
|
6月前
|
API
使用axios发送请求的格式是什么?示例代码
使用axios发送请求的格式是什么?示例代码
33 0
|
3月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
159 2
|
3月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
40 1
|
4月前
|
JSON 测试技术 Go
Go Kit中读取原始HTTP请求体的方法
Go Kit中读取原始HTTP请求体的方法
|
6月前
|
安全 搜索推荐
基础入门 HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
基础入门 HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
|
XML Web App开发 JSON
800字带你弄懂Http请求和响应
800字带你弄懂Http请求和响应
213 0
|
存储 算法
【实测】大白话讲requests发送请求的不同参数类型(上)
【实测】大白话讲requests发送请求的不同参数类型(上)
|
XML JSON 前端开发
【实测】大白话讲requests发送请求的不同参数类型(下)
【实测】大白话讲requests发送请求的不同参数类型(下)
|
Shell 程序员 开发工具
711.踩坑指南:如何验证http协议的请求与响应格式?
711.踩坑指南:如何验证http协议的请求与响应格式?
132 0