# Auto.js请求实例讲解
Auto.js请求实例
# 概览
本文主讲Auto.js请求实例,带POST,GET 请求,开发者可自行封装模块,工具类调用,参数有详细讲解
当前方法为GET请求,json请求格式
var requestUrl="https://api.potatocloud.cn/api/verifyCardV2";
var result = http.get(requestUrl,{
headers: {
//您的askKey ,app令牌
'askKey': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcHBJZCI6NzQxNTQyMjczNzM1MDIwNTQ0LCJnZXRNYW5hZ2VtZW50SWQiOjY5ODExOTE5MzkxODc4NzU4NCwiVElNRSI6MTY2NTkwOTA2NTQ5MX0.DBwh3QbzS_MozRIqCgPUKhZ7v6_g7jQB5P8f3TTjwQ8',
//请求格式默认json
'Content-Type': 'application/json',
// 签,如果开启验签是必传
"sign":"",
// 当前系统时间,如果开启验签是必传
"time":"",
// 用户令牌,文档有描述是否必传
"apiUserToken":""
}
}
);
// 获取返回
var str=result.body.string()
// 解析json数据
console.log(JSON.parse(str))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
当前方法为POST请求,json请求格式
const data={}
var requestUrl="https://api.potatocloud.cn/api/verifyCardV2";
var result = http.post(requestUrl,data,{
headers: {
//您的askKey ,app令牌
'askKey': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcHBJZCI6NzQxNTQyMjczNzM1MDIwNTQ0LCJnZXRNYW5hZ2VtZW50SWQiOjY5ODExOTE5MzkxODc4NzU4NCwiVElNRSI6MTY2NTkwOTA2NTQ5MX0.DBwh3QbzS_MozRIqCgPUKhZ7v6_g7jQB5P8f3TTjwQ8',
//请求格式默认json
'Content-Type': 'application/json',
// 签,如果开启验签是必传
"sign":"",
// 当前系统时间,如果开启验签是必传
"time":"",
// 用户令牌,文档有描述是否必传
"apiUserToken":""
},
}
);
// 获取返回
var str=result.body.string()
// 解析json数据
console.log(JSON.parse(str))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#####加解密 以下为需要引入包
importClass(android.util.Base64);
importClass(javax.crypto.Cipher);
importClass(javax.crypto.spec.SecretKeySpec);
importClass(java.nio.charset.Charset);
importClass(java.nio.charset.StandardCharsets);
importClass(java.security.Key);
importClass(java.lang.StringBuilder);
1
2
3
4
5
6
7
2
3
4
5
6
7
AEC加密
const CIPHER_ALGORITHM="AES/ECB/PKCS5Padding";
const DEFAULT_VALUE="0";
const CHARSET_UTF8=StandardCharsets.UTF_8;
const SECRET_KEY_LENGTH=32;
const KEY_ALGORITHM = "AES";
function encrypt(data,secretKey) {
try {
//创建密码器
var cipher = Cipher.getInstance(CIPHER_ALGORITHM);
//初始化为加密密码器
cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(secretKey));
var encryptByte = cipher.doFinal(stringToByte(data));
// 将加密以后的数据进行 Base64 编码
return base64Encode(encryptByte);
} catch (e) {
console.log(e);
}
return null;
}
function getSecretKey(secretKey) {
secretKey = toMakeKey(secretKey, SECRET_KEY_LENGTH, DEFAULT_VALUE);
var dto=new SecretKeySpec(stringToByte(secretKey), KEY_ALGORITHM)
return dto;
}
function toMakeKey(secretKey,length,text) {
// 获取密钥长度
var strLen = secretKey.length;
// 判断长度是否小于应有的长度
if (strLen < length) {
// 补全位数
var builder = new StringBuilder();
// 将key添加至builder中
builder.append(secretKey);
// 遍历添加默认文本
for (var i = 0; i < length - strLen; i++) {
builder.append(text);
}
// 赋值
secretKey = builder.toString();
}
return secretKey;
}
// 字符串转数组
function stringToByte(str) {
var len, c;
len = str.length;
var bytes = [];
for(var i = 0; i < len; i++) {
c = str.charCodeAt(i);
if(c >= 0x010000 && c <= 0x10FFFF) {
bytes.push(((c >> 18) & 0x07) | 0xF0);
bytes.push(((c >> 12) & 0x3F) | 0x80);
bytes.push(((c >> 6) & 0x3F) | 0x80);
bytes.push((c & 0x3F) | 0x80);
} else if(c >= 0x000800 && c <= 0x00FFFF) {
bytes.push(((c >> 12) & 0x0F) | 0xE0);
bytes.push(((c >> 6) & 0x3F) | 0x80);
bytes.push((c & 0x3F) | 0x80);
} else if(c >= 0x000080 && c <= 0x0007FF) {
bytes.push(((c >> 6) & 0x1F) | 0xC0);
bytes.push((c & 0x3F) | 0x80);
} else {
bytes.push(c & 0xFF);
}
}
return bytes;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
AEC解密
const CIPHER_ALGORITHM="AES/ECB/PKCS5Padding";
const DEFAULT_VALUE="0";
const CHARSET_UTF8=StandardCharsets.UTF_8;
const SECRET_KEY_LENGTH=32;
const KEY_ALGORITHM = "AES";
function decode(base64Data,secretKey) {
try {
var data = base64Decode(base64Data);
var cipher = Cipher.getInstance(CIPHER_ALGORITHM);
//设置为解密模式
cipher.init(Cipher.DECRYPT_MODE, getSecretKey(secretKey));
//执行解密操作
var result = cipher.doFinal(data);
//var str=Uint8ArrayToString(result);
var str=new java.lang.String(result,CHARSET_UTF8);
return str;
} catch (e) {
console.log(e);
}
return null;
}
function getSecretKey(secretKey) {
secretKey = toMakeKey(secretKey, SECRET_KEY_LENGTH, DEFAULT_VALUE);
var dto=new SecretKeySpec(stringToByte(secretKey), KEY_ALGORITHM)
return dto;
}
function toMakeKey(secretKey,length,text) {
// 获取密钥长度
var strLen = secretKey.length;
// 判断长度是否小于应有的长度
if (strLen < length) {
// 补全位数
var builder = new StringBuilder();
// 将key添加至builder中
builder.append(secretKey);
// 遍历添加默认文本
for (var i = 0; i < length - strLen; i++) {
builder.append(text);
}
// 赋值
secretKey = builder.toString();
}
return secretKey;
}
// 字符串转数组
function stringToByte(str) {
var len, c;
len = str.length;
var bytes = [];
for(var i = 0; i < len; i++) {
c = str.charCodeAt(i);
if(c >= 0x010000 && c <= 0x10FFFF) {
bytes.push(((c >> 18) & 0x07) | 0xF0);
bytes.push(((c >> 12) & 0x3F) | 0x80);
bytes.push(((c >> 6) & 0x3F) | 0x80);
bytes.push((c & 0x3F) | 0x80);
} else if(c >= 0x000800 && c <= 0x00FFFF) {
bytes.push(((c >> 12) & 0x0F) | 0xE0);
bytes.push(((c >> 6) & 0x3F) | 0x80);
bytes.push((c & 0x3F) | 0x80);
} else if(c >= 0x000080 && c <= 0x0007FF) {
bytes.push(((c >> 6) & 0x1F) | 0xC0);
bytes.push((c & 0x3F) | 0x80);
} else {
bytes.push(c & 0xFF);
}
}
return bytes;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Base64加密
/**
* 将 字节数组 转换成 Base64 编码
*/
function base64Encode(data) {
return Base64.encodeToString(data, Base64.NO_WRAP);
}
1
2
3
4
5
6
7
2
3
4
5
6
7
Base64解密
/**
* 将 Base64 字符串 解码成 字节数组
*/
function base64Decode(data) {
return Base64.decode(data, Base64.NO_WRAP);
}
1
2
3
4
5
6
2
3
4
5
6
Md5 加密方法
function encrypt(string){
var md = java.security.MessageDigest.getInstance("MD5");// 生成一个MD5加密计算摘要
md.update(java.lang.String(string).getBytes("UTF-8"));// 计算md5函数,字符编码是 UTF-8
return byteArrayToHexString(md.digest());
};
// 将二进制数据转换成16进制字符串
function byteArrayToHexString(bytes) {
var val = "";
for (var i = 0; i < bytes.length; i++) {
var tmp = bytes[i];
if (tmp < 0) {
tmp = 256 + tmp;
}
tmp = tmp.toString(16);
if ((tmp + "").length == 1) {
tmp = "0" + tmp;
}
val += tmp;
}
return val;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# autoPro和autox自带加密
如果自带$crypto加密,可以使用如下代码
// AES/ECB/NOPadding 加密
let key = new $crypto.Key('de56a085de56a085');
let encrypt = (string) => $crypto.encrypt(string, key, "AES/ECB/NOPadding", {
output: 'base64',
input: 'string',
})
let decrypt = (base64) => $crypto.decrypt(base64, key, "AES/ECB/NOPadding", {
output: 'string',
input: 'base64',
})
// DES 加密
let keyDES = new $crypto.Key('de56a085');
let encryptDES = (string) => $crypto.encrypt(string, key, "DES", {
output: 'base64',
input: 'string',
})
let decryptDES = (base64) => $crypto.decrypt(base64, key, "DES", {
output: 'string',
input: 'base64',
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21