在移动自动化、设备管控、数据采集等场景中,网络请求 是连接设备与云端、实现数据交互的核心能力。自动化脚本可快速实现GET/POST 请求、文件下载、URI 编解码、微服务 / 远程接口调用 等功能,完美适配移动端自动化脚本开发。本文系统讲解平台网络脚本的编写规范、核心 API 用法、异常处理,并提供可直接运行的Demo 源码,帮助开发者快速掌握网络脚本开发,提升自动化效率。
一、冰狐智能辅助网络脚本基础认知
1. 核心特性
- 语言环境 :基于简化版 JavaScript,语法轻量,易上手,所有脚本以
main函数为默认入口。 - 执行模式 :同步阻塞,请求完成后才会执行后续代码,逻辑清晰,无需处理异步回调。
- 返回结构统一 :多数网络 API 返回
{state:string, data:string}对象,state为success/failed,data为响应内容或错误信息。 - 移动端适配:支持断点续传、文件存储、系统消息回调,适配手机存储与相册更新。
2. 脚本编写规范
- 入口必须为
main函数,脚本执行从main开始。 - 变量用
var声明,不支持复杂 ES6 + 语法。 - 网络请求需处理成功 / 失败状态,避免脚本崩溃。
- 敏感接口(如文件下载)需申请存储权限。
二、核心网络 API 详解
1. httpGet:基础 GET 请求
作用:对目标 URL 发起同步 GET 请求,用于获取页面、接口数据、查询参数传递等。
参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 目标请求地址,可拼接查询参数 |
| headers | object | 否 | 请求头,如Accept、User-Agent |
返回值
| 属性名 | 类型 | 说明 |
|---|---|---|
| state | string | success = 成功,failed = 失败 |
| data | string | 成功返回响应体,失败返回错误原因 |
实战 Demo:获取公共接口数据
javascript
// 冰狐智能辅助 httpGet 完整Demo
function main() {
// 1. 定义请求URL与请求头
var url = "https://api.vvhan.com/api/ip";
var headers = {
"Accept": "application/json",
"User-Agent": "Mozilla/5.0 IceFox Smart Assist"
};
// 2. 发起GET请求
var ret = httpGet(url, headers);
// 3. 处理响应结果
if (ret.state === "success") {
console.log("GET请求成功!响应数据:");
console.log(ret.data);
// 可解析JSON(若返回JSON格式)
try {
var jsonData = JSON.parse(ret.data);
console.log("解析后IP:" + jsonData.ip);
} catch (e) {
console.log("JSON解析失败:" + e);
}
} else {
console.log("GET请求失败!原因:" + ret.data);
}
}
2. httpPost:POST 请求(支持表单 / JSON / 文件上传)
作用 :同步 POST 请求,支持x-www-form-urlencoded、json、multipart/form-data三种格式,覆盖提交表单、上传文件、接口调用等场景。
参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 目标地址 |
| data | object/string | 是 | 请求体,键值对或字符串 |
| headers | string/object | 否 | string=contentType(json/form/text/multipart);object = 完整请求头 |
实战 Demo1:JSON 格式提交数据
javascript
// httpPost JSON请求Demo
function main() {
var url = "https://httpbin.org/post";
// 请求体数据
var postData = {
username: "icefox_test",
password: "123456",
age: 25
};
// 第三个参数传"json",自动设置Content-Type为application/json
var ret = httpPost(url, postData, "json");
if (ret.state === "success") {
console.log("POST JSON请求成功:");
console.log(ret.data);
} else {
console.log("POST JSON请求失败:" + ret.data);
}
}
实战 Demo2:multipart 文件上传
javascript
// httpPost 文件上传Demo
function main() {
var uploadUrl = "https://httpbin.org/post";
// 构造文件对象(手机本地路径)
var file = new File("/sdcard/DCIM/Camera/test.jpg");
var postData = {
file: file,
filename: "icefox_upload.jpg",
uploadTime: new Date().getTime()
};
// 第三个参数传"multipart",自动处理文件上传
var ret = httpPost(uploadUrl, postData, "multipart");
if (ret.state === "success") {
console.log("文件上传成功!");
console.log(ret.data);
} else {
console.log("文件上传失败:" + ret.data);
}
}
3. downloadFile:文件下载(断点续传 + 进度回调)
作用 :下载网络文件,支持断点续传、自定义路径 / 文件名,移动端通过cbMessage回调监听下载状态。
参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 文件下载地址 |
| destFilePath | string | 否 | 存储路径,默认手机外部存储 |
| destFileName | string | 否 | 文件名,默认取 URL 末尾 |
| timeout | integer | 否 | 超时时间,默认 1000000ms |
| retryCount | integer | 否 | 重试次数,默认 1 次 |
实战 Demo:带进度提示的音频下载
javascript
// downloadFile 完整Demo(含进度回调)
function main() {
console.log("开始执行文件下载...");
var fileUrl = "https://downsc.chinaz.net/Files/DownLoad/sound1/202303/y1687.wav";
// 下载到指定路径,自定义文件名
var savePath = "/sdcard/icefox_download";
var fileName = "test_audio.wav";
// 调用下载API
var filePath = downloadFile(fileUrl, savePath, fileName, 30000, 2);
if (filePath) {
console.log("文件下载完成,本地路径:" + filePath);
// 图片下载后需更新相册(音频无需)
// updateAlbum(filePath);
} else {
console.log("文件下载失败!");
}
}
// 系统消息回调:监听下载状态
function cbMessage(msgId, p1, p2) {
if (msgId === "msg_download_start") {
Toast.show("开始下载...");
} else if (msgId === "msg_download_progress") {
Toast.show("下载进度:" + p1 + "%");
} else if (msgId === "msg_download_success") {
Toast.show("下载成功!");
} else if (msgId === "msg_download_failed") {
Toast.show("下载失败!");
}
}
4. URI 编解码:encodeURI/decodeURI
作用:处理 URL 中文、特殊字符编码,避免请求异常。
Demo:URL 参数编解码
javascript
function main() {
// 待编码字符串(含中文)
var rawStr = "冰狐智能辅助=测试&name=icefox";
// 编码
var encoded = encodeURI(rawStr);
console.log("编码后:" + encoded);
// 解码
var decoded = decodeURI(encoded);
console.log("解码后:" + decoded);
// 拼接带中文参数的URL
var url = "https://api.com/search?keyword=" + encodeURI("冰狐网络脚本");
console.log("最终请求URL:" + url);
}
5. 服务调用:callMicroService/callWebService
- callMicroService:调用平台自定义微服务,适用于内部业务逻辑扩展。
- callWebService:调用第三方无权限接口,POST 请求,body 为 JSON。
javascript
function main() {
var url = "https://httpbin.org/post";
var params = {
app: "冰狐智能辅助",
version: "1.0.0",
func: "callWebService"
};
var ret = callWebService(url, params, 15000);
console.log("远程服务调用结果:" + ret);
}
三、网络脚本开发最佳实践
1. 异常处理
- 所有网络请求必须判断
ret.state,避免空指针异常。 - JSON 解析用
try-catch包裹,防止响应非 JSON 导致崩溃。 - 文件路径优先使用绝对路径,避免相对路径适配问题。
2. 性能优化
- 避免循环高频请求,增加延时(如
sleep(1000))。 - 大文件下载用
downloadFile断点续传,减少流量消耗。 - 请求头精简,仅传必要字段。
3. 权限与适配
- 下载 / 上传文件需开启存储权限。
- 图片下载后调用
updateAlbum更新相册。 - 移动端脚本优先使用
cbMessage处理状态,提升用户体验。
四、完整综合实战 Demo
以下 Demo 整合GET 请求、POST 提交、文件下载、URI 编解码,可直接在冰狐智能辅助平台运行:
javascript
// 冰狐智能辅助 网络脚本综合Demo
function main() {
console.log("===== 冰狐网络脚本综合测试开始 =====");
// 1. URI编解码测试
var testStr = "冰狐智能辅助_网络测试";
var encStr = encodeURI(testStr);
var decStr = decodeURI(encStr);
console.log("编码:" + encStr + ",解码:" + decStr);
// 2. httpGet测试
var getRet = httpGet("https://api.vvhan.com/api/ip", null);
if (getRet.state === "success") {
console.log("GET成功:" + getRet.data);
} else {
console.log("GET失败:" + getRet.data);
}
// 3. httpPost JSON测试
var postData = {platform: "冰狐智能辅助", type: "网络脚本"};
var postRet = httpPost("https://httpbin.org/post", postData, "json");
console.log("POST状态:" + postRet.state);
// 4. 文件下载测试
var filePath = downloadFile(
"https://downsc.chinaz.net/Files/DownLoad/sound1/202303/y1687.wav",
"/sdcard/icefox",
"test.wav",
30000,
2
);
console.log("文件路径:" + filePath);
console.log("===== 冰狐网络脚本综合测试结束 =====");
}
// 下载状态回调
function cbMessage(msgId, p1, p2) {
if (msgId === "msg_download_progress") {
Toast.show("下载进度:" + p1 + "%");
}
}
五、总结
冰狐智能辅助平台可实现移动端自动化的核心网络需求。从基础的httpGet/httpPost,到支持断点续传的downloadFile,再到 URI 编解码与服务调用,覆盖了数据采集、文件同步、接口对接等绝大多数场景。开发时遵循同步阻塞逻辑、统一返回结构、完善异常处理、权限提前配置四大原则,结合本文提供的 Demo 源码,可快速开发出稳定、健壮的网络脚本,大幅提升移动自动化效率。