牙叔教程 简单易懂

为什么做

有人用黄鸟抓了请求之后, 发现是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请求相关推荐

  1. POST请求转换为其他请求失效 input type=“hidden“ name=“_method“ value=“put“无效

    在使用Springboot进行RESTFUL风格开发时需要将表单数据以其他请求提交. 直接在表单中添加 <input type="hidden" name="_me ...

  2. java面试题8 牛客:在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象

    在Web应用程序中,(    )负责将HTTP请求转换为HttpServletRequest对象 A Servlet对象 B HTTP服务器 C Web容器 D JSP网页 首先我们来看看web程序的 ...

  3. get请求报500_http请求和响应的全过程

    写在最前面的话: 最近心里总感觉怪怪的,也不知道为什么.直到今天我才发现我的公众号上有这么多用户呢.一个月因为种种原因没有更文章啦,心里总是过意不去,久等啦各位.以后尽我最大的努力更文章,哈哈哈!整理 ...

  4. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...

    原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...

  5. Python爬虫——2.底层操作和请求头、请求代理以及cookie操作

    本文章此节主要讲解: ·爬虫程序urllib2模块底层操作: ·请求头的设置和添加: ·请求代理的种类和类型: ·关于cookie的操作(手动添加/程序自动获取) 一.爬虫底层操作和请求头的设置 1. ...

  6. Ajax请求,JQuery发送请求,Axios请求,Fetch请求总结

    常见的请求方式 1.Ajax请求 定义: 同步与异步的区别: Ajax的工作原理: 实现AJAX的基本步骤: Get请求: Post请求: 2.JQuery发送请求 Get请求: Post请求: 3. ...

  7. XHR请求与fetch请求

    文章目录 一.XMLHttpRequest对象 1.使用XHR (1).代码示例 (2).GET请求 (3).POST请求 (4).注意事项 2.XMLHttpRequest Level 2 (1). ...

  8. HTTP请求行、请求头、请求体详解

    HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEAD. ...

  9. Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题)

    Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题) 1.Request(请求) Request继承体系 要想了解RequestFacade中都提供了哪些方法, ...

最新文章

  1. GMS(cts、gsi、vts、gts、ctsv)问题总结
  2. 使用Xcode和Instruments调试解决iOS内存泄露【转】
  3. Fisher 线性分类器--转
  4. python读文件的三个方法read()、readline()、readlines()详解
  5. closewait一直不释放_机床为什么要释放应力?怎么释放应力才好?
  6. SpringMVC中拦截/和拦截/*的区别
  7. SpringBoot2.1.15(26) WebFlux快速上手——响应式Spring的道法术器
  8. python list tuple区别_Python list、tuple、dict区别
  9. ucc编译器(x86移植)
  10. Creating Options Pages
  11. 从 C++98 到 C++17,元编程是如何演进的? | 技术头条
  12. Linux之SELinux自主访问控制系统
  13. Ubuntu 16.04静态IP设置
  14. html画布画五环,奥运五环(canvas标签学习)
  15. 怎样才能走进区块链行业?
  16. VBA-循环语句之For Each..Next
  17. 开源中国广州源创会分享
  18. 无线信号的RSS和CSI的理解
  19. 微PE装Win10详细教程:UEFI+GPT方式
  20. 电子商务公司怎么赚钱

热门文章

  1. JavaScript(JS) string.italics( )
  2. “移动”中的英特尔:将补贴进行到底!
  3. 【elementui】走马灯自适应图片高度宽度 走马灯图片显示不全
  4. 03-Netty中的Future接口
  5. Compound Words
  6. vue component组件内部自己引用自己
  7. 最新版YOLOv6训练自己的数据集(超详细完整版!)
  8. 【Mo 人工智能技术博客】图卷积网络概述及其在论文分类上的应用
  9. python发短信脚本_python自动发送短信
  10. 少壮不努力,一生在内地