回答
Hamibot 的 http 模块提供了标准的 HTTP 客户端功能,支持 GET、POST、JSON 提交、 multipart 文件上传等多种请求方式。以下是详细的 API 调用格式说明。
1. 通用调用结构
大多数 HTTP 请求函数遵循以下参数结构:
// 文档地址 https://docs.hamibot.com/
http.method(url[, data/options, callback])
- url
<String>:请求地址,必须以http://或https://开头。 - data
<Object>|<String>:POST 请求时的数据内容。 - options
<Object>:请求选项,可配置头部信息、请求方法等。 - callback
<Function>:回调函数,参数为 Response 对象。如果不提供回调,请求将同步阻塞执行。
2. 常用请求方法
HTTP GET 请求
用于获取数据。
// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/data';
var res = http.get(url);
if (res.statusCode == 200) {
log(res.body.string());
}
HTTP POST 请求
用于提交表单数据。
// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/submit';
var data = {
key1: 'value1',
key2: 'value2'
};
var res = http.post(url, data);
log(res.body.string());
HTTP POST JSON 请求
自动将数据对象序列化为 JSON 字符串,并设置 Content-Type 为 application/json。
// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/json';
var jsonData = {
id: 123,
name: 'test'
};
var res = http.postJson(url, jsonData);
log(res.body.json());
HTTP Multipart 请求
用于文件上传或混合表单提交。
// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/upload';
// 格式 1: 直接传入文件对象
var res = http.postMultipart(url, {
file: open('/sdcard/1.txt')
});
// 格式 2: 附带非文件参数
var res2 = http.postMultipart(url, {
appId: 'abcdefghijk',
file: open('/sdcard/1.txt')
});
log(res2.body.string());
通用 HTTP 请求
允许自定义请求方法(PUT、DELETE 等)和更多选项。
// 文档地址 https://docs.hamibot.com/
var url = 'https://api.example.com/resource';
var options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer token123'
},
contentType: 'application/json'
};
var data = {
status: 'updated'
};
var res = http.request(url, data, options);
log('code = ' + res.statusCode);
3 请求选项 (Options)
options 对象支持以下常用属性:
- headers
<Object>:HTTP 头部信息,键值对形式。 - method
<String>:HTTP 请求方法,包括 "GET", "POST", "PUT", "DELETE", "PATCH"。 - contentType
<String>:设置 "Content-Type" 头部,例如 "text/plain", "application/json"。
4. 响应对象 (Response)
请求完成后返回的 Response 对象包含以下主要属性和方法:
- statusCode
<int>:HTTP 状态码(如 200, 404)。 - statusMessage
<String>:状态消息。 - body
<Object>:响应体对象。- string():返回响应内容的字符串形式。
- json():尝试将响应内容解析为 JSON 对象。
- bytes():返回响应内容的字节数组。
5. 异步回调示例
如果不希望阻塞脚本执行,可以传入回调函数。注意使用标准函数声明以保持兼容性。
// 文档地址 https://docs.hamibot.com/
var url = 'https://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp';
http.get(url, {}, function(res) {
if (res.statusCode != 200) {
log('请求失败:' + res.statusCode);
} else {
log(res.body.json());
}
});
6. 注意事项
- 脚本运行环境基于 Rhino 1.7.15,编写代码时请勿使用箭头函数表达式或函数默认参数。
- 所有 URL 必须包含协议头(
http://或https://),否则默认补全为http://。 - 同步请求会阻塞脚本后续执行,直到请求完成或超时;异步请求通过回调处理结果。
ℹ️ 本回答由 AI 生成,内容仅供参考