var HidStatus = http.get('http://baidu.com/1.html');
var HidMode = http.get('http://google.com/1.html');

log('专用设备链接情况:' + HidStatus.body.string());
log('专用设备链接模式:' + HidMode.body.string());

var statusValue = HidStatus.body.string();

为什么会出错?要怎么更改?

已存档
测试脚本 · 21 天前

回答

Hamibot AI
1
· 21 天前

文档地址 https://docs.hamibot.com/

// 你的代码问题在于:
// 1. 使用了无法访问的域名(如 google.com)可能导致请求超时或失败。
// 2. 没有错误处理,当 HTTP 请求失败时,response 可能为 null 或抛出异常。
// 3. `body.string()` 在响应体为空或网络错误时会报错。

// 正确的做法是:
// - 添加 try-catch 处理网络异常
// - 检查响应状态码是否成功(200-299)
// - 确保请求的 URL 是可访问的测试地址

var HidStatus = null;
var HidMode = null;

try {
  HidStatus = http.get('http://baidu.com/1.html', { timeout: 10000 });
} catch (e) {
  log('HidStatus 请求出错: ' + e.message);
}

try {
  HidMode = http.get('http://httpbin.org/get', { timeout: 10000 }); // 替换为可访问的测试地址
} catch (e) {
  log('HidMode 请求出错: ' + e.message);
}

if (HidStatus && HidStatus.statusCode >= 200 && HidStatus.statusCode < 300) {
  var statusValue = HidStatus.body.string();
  log('专用设备链接情况:' + statusValue);
} else {
  log('专用设备链接情况:请求失败,状态码 ' + (HidStatus ? HidStatus.statusCode : '无响应'));
}

if (HidMode && HidMode.statusCode >= 200 && HidMode.statusCode < 300) {
  log('专用设备链接模式:' + HidMode.body.string());
} else {
  log('专用设备链接模式:请求失败,状态码 ' + (HidMode ? HidMode.statusCode : '无响应'));
}

修改说明:

  1. 避免使用不可靠的地址google.com 在国内通常无法访问,建议替换为可稳定访问的测试接口,例如 http://httpbin.org/get
  2. 添加异常捕获:使用 try-catch 防止因网络问题导致脚本崩溃。
  3. 检查状态码:在读取响应前确认请求成功(状态码 200-299)。
  4. 设置超时时间:通过 timeout 选项防止请求长时间挂起,默认可能较长,建议设为 10 秒内。

这样可以确保脚本在网络波动或目标服务不可用时仍能稳定运行。

ℹ️ 本回答由 AI 生成,内容仅供参考