uni-app request:fail abort statusCode:-1 Unexpected char 0x5b54 at 104
uni-app request:fail abort statusCode:-1 Unexpected char 0x5b54 at 104
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
PC开发环境操作系统版本号:
Windows 10 专业版 19042.1052
HBuilderX类型:
正式
HBuilderX版本号:
3.1.18
手机系统:
Android
手机系统版本号:
Android 7.1.1
手机厂商:
vivo
手机机型:
X9
页面类型:
vue
打包方式:
离线
项目创建方式:
HBuilderX
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows 10 专业版 | 19042.1052 | HBuilderX |
| Android | 7.1.1 | - |
示例代码:
request.js
import { config } from './config.js'
export const apiResquest = (prams) => { //prams 为我们需要调用的接口API的参数 下面会贴具体代码
return new Promise((resolve, reject) => {
let url = config.base_url + prams.url; //请求的网络地址和局地的api地址组合
let type = prams.method;
let query = prams.query;
let AuthorizationToken = uni.getStorageSync('token') || ''
let headerData = {query,AuthorizationToken};
uni.showLoading({
title: '加载中',
mask: true
})
console.log(111)
uni.request({
method: type,
url: url,
data:query,
header: headerData,
dataType: 'json',
}).then((response) => {
console.log(response)
setTimeout(function() {
uni.hideLoading();
}, 200);
let [error, res] = response;
resolve(res.data);
}).catch(error => {
let [err, res] = error;
reject(err)
})
});
}
sestting.js
import { apiResquest } from '../../request.js'
export const userUpdate = (query) => {
return apiResquest({
url: '/user/api/user/update',
method: 'POST',
query: {...query}
})
}
methods:
userUpdate() {
const query = {
id:this.userInfo.id,
headImg: this.userInfo.headUrl,
nickname:this.userInfo.realName
}
console.log(query)
userUpdate(query).then((res) => {
console.log(res)
let code = res.code
if (code == 0) {
uni.showToast({
title: '修改成功',
duration: 2000,
icon: 'success'
})
} else {
let msg = res.msg
uni.showToast({
title: msg,
duration: 2000,
icon: 'none'
})
}
}).catch(err => {
console.log(err)
})
},
操作步骤:
提交https请求,携带中文json报错 stateCode=-1 ,不带中文可请求成功
预期结果:
可提交中文
实际结果:
带中文报错
bug描述:
18:06:09.565 Unhandled promise rejectionTypeError: Invalid attempt to destructure non-iterable instance.
18:06:09.598 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.
更多关于uni-app request:fail abort statusCode:-1 Unexpected char 0x5b54 at 104的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题已解决,header 携带过多参数问题.
更多关于uni-app request:fail abort statusCode:-1 Unexpected char 0x5b54 at 104的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个错误主要是由两个问题导致的:
-
请求头设置错误:在你的代码中,
header: headerData的写法有问题。headerData是一个包含query和AuthorizationToken的对象,但 HTTP 请求头应该是键值对形式,且query作为键名不符合规范。 -
Promise 回调参数解析错误:uni.request 的 then/catch 回调中,参数是一个数组
[error, res],但你的解构方式不正确。
修改建议:
1. 修正请求头设置:
let headerData = {
'Content-Type': 'application/json',
'Authorization': AuthorizationToken
};
2. 修正 Promise 回调处理:
uni.request({
method: type,
url: url,
data: query,
header: headerData,
dataType: 'json',
}).then((response) => {
uni.hideLoading();
// 正确解构数组参数
const [error, res] = response;
if (error) {
reject(error);
return;
}
resolve(res.data);
}).catch(error => {
uni.hideLoading();
reject(error);
});
3. 确保服务器支持中文编码: 检查服务器端是否正确设置了 UTF-8 编码,特别是在接收 JSON 数据时。
4. 检查网络配置: 由于是离线打包,确认 manifest.json 中已正确配置网络请求权限:
{
"networkTimeout": {
"request": 10000
}
}

