回答
Hamibot 的 http 模块支持标准的 HTTP 协议请求,主要包含 GET、POST(JSON 及 Multipart)及自定义请求格式。以下是详细的格式说明和使用方法。
1. URL 格式要求
请求的 URL 地址必须以 "http://" 或 "https://" 开头。如果 URL 没有以前缀开头,系统默认视为 "http://"。
2. 常见请求方法及数据格式
GET 请求
- 函数:
http.get(url[, options, callback]) - 用途: 获取数据,无请求体。
- 示例:
// 文档地址 https://docs.hamibot.com/ var r = http.get('https://www.baidu.com'); log('code = ' + r.statusCode); log('html = ' + r.body.string());
JSON POST 请求
- 函数:
http.postJson(url[, data, options, callback]) - 数据格式:
data参数为对象,系统会自动调用JSON.stringify()将其转换为 JSON 字符串。 - 头部信息: 自动将 "Content-Type" 置为
"application/json"。 - 示例:
// 文档地址 https://docs.hamibot.com/ var url = 'https://api.example.com/login'; var data = { username: 'test', password: '123456' }; var res = http.postJson(url, data); var html = res.body.string(); if (html.contains('成功')) { toast('请求成功'); }
Multipart POST 请求 (文件上传)
- 函数:
http.postMultipart(url, files[, options, callback]) - 数据格式:
files参数是<name1: value1, name2: value2, ...>的键值对。value 支持以下格式:- 文件对象:
open()返回的类型。 - 数组格式 1:
[fileName, filePath] - 数组格式 2:
[fileName, mimeType, filePath] - 普通字符串: 非文件参数。
- 文件对象:
- 示例:
// 文档地址 https://docs.hamibot.com/ var url = 'https://api.example.com/upload'; var res = http.postMultipart(url, { appId: 'adcdefghijk', file: open('/sdcard/1.txt') }); log(res.body.string());
自定义请求
- 函数:
http.request(url[, options, callback]) - 用途: 灵活指定请求方法、头部和内容类型。
- Options 属性:
headers: 键值对形式的 HTTP 头部信息。method: 请求方法,包括 "GET", "POST", "PUT", "DELETE", "PATCH"。contentType: 内容类型,例如 "text/plain", "application/json"。
3. 执行方式 (同步与异步)
- 同步执行: 如果不加
callback参数,请求将阻塞、同步地执行,函数直接返回 Response 对象。 - 异步执行: 如果添加
callback参数,请求异步执行。回调函数参数为(res, err)。// 文档地址 https://docs.hamibot.com/ http.get('https://www.baidu.com', {}, function (res, err) { if (err) { console.error(err); return; } log(res.body.string()); });
4. 响应对象 (Response)
请求完成后返回的 Response 对象包含以下常用属性:
statusCode: 状态码。body: 响应体,常用方法body.string()获取字符串内容。headers: 响应头部信息。
确保在使用 JavaScript 编写脚本时,避免使用箭头函数表达式或默认参数值,以兼容 Hamibot 的 Rhino 1.7.15 引擎。
ℹ️ 本回答由 AI 生成,内容仅供参考