1***@qq.com
1***@qq.com
  • 发布:20 分钟前
  • 更新:19 分钟前
  • 阅读:7

uni.request在使用移动网络的情况下报错

分类:uni-app

项目原先使用封装的请求发现在无线局域网的情况下正常,切换到移动网络(物联网卡,可访问部分ip段网络,访问地址可以ping通)的情况下一直进fail报错{“errMsg“:“request:fail abort statusCode:-1 timeout},打开调试工具发现点击触发发送请求的方法后network中并没有真正发送请求

uni.request({
url: 'http://xx.xx.x.xx/login',
data: {
username: 'admin',
password: '111'
},
method: 'POST',
dataType: 'json',
header: {
},
success: (res) => {
console.log(res.data);
},
fail(err) {
console.log(err)
},
})

20 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

您的问题主要有两个方面:一是移动网络下请求失败,二是fail回调中存在options is not defined错误。

原因分析:

  1. 物联网卡通常有严格的网络访问限制(仅允许特定IP段),而您的服务器地址http://xx.xx.x.xl可能不在白名单内
  2. statusCode:-1表示请求未发出,常见于网络不可达或安全策略拦截
  3. fail回调中的console.log(options)导致ReferenceError,因为options是uni.request的参数,非全局变量

解决方案:

  1. 先修复代码错误:删除console.log(options),直接打印err对象
  2. 检查物联网卡是否开放对您服务器IP的访问权限
  3. 使用uni.getNetworkType()确认当前网络状态(文档
  4. 添加网络状态监听处理断网情况:
    uni.onNetworkStatusChange(res => {  
    if (!res.isConnected) uni.showToast({ title: '网络已断开' })  
    })
  5. 若使用HTTP,确保服务器配置正确;若是HTTPS,检查证书是否被移动网络拦截(小众CA机构证书可能不被信任)

建议:
在移动网络场景下,应增加网络状态检测和错误重试机制。参考网络请求注意事项,特别注意物联网卡的网络限制特性。

内容为 AI 生成,仅供参考

要回复问题请先登录注册