uni-app uni.request 请求报错

发布于 1周前 作者 vueper 来自 Uni-App

uni-app uni.request 请求报错

示例代码:

uni.request({
url: 'https://www.baidu.com',
success: (res) => {
console.log(res);
},
fail: (res) => {
console.log(res);
}
});

操作步骤:

  • 发送请求

预期结果:

  • 正常返回

实际结果:

  • 报错:request:fail abort statusCode:-1 Unexpected char 0x578b at 43 in user-agent value: Mozilla/5.0 (Linux; Android 6.0.1; TBY321-K型 Build/MOB30M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2596.0 Mobile Safari/537.36 uni-app Html5Plus/1.0 (Immersed/24.0)

bug描述:

  • request:fail abort statusCode:-1 Unexpected char 0x578b at 43 in user-agent value: Mozilla/5.0 (Linux; Android 6.0.1; TBY321-K型 Build/MOB30M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2596.0 Mobile Safari/537.36 uni-app Html5Plus/1.0 (Immersed/24.0)

1 回复

在处理uni-app中的uni.request请求报错问题时,首先需要明确错误类型及可能的原因,然后通过代码进行调试和修正。以下是一些常见的错误类型及其对应的代码处理案例:

1. 网络错误(如404, 500等HTTP状态码)

错误描述:服务器返回非2xx的HTTP状态码。

处理代码

uni.request({
    url: 'https://example.com/api/data',
    method: 'GET',
    success: (res) => {
        if (res.statusCode === 200) {
            console.log('数据请求成功:', res.data);
        } else {
            console.error('服务器错误:', res.statusCode, res.data);
        }
    },
    fail: (err) => {
        console.error('请求失败:', err);
    }
});

2. 请求超时

错误描述:请求在规定时间内没有得到响应。

处理代码

uni.request({
    url: 'https://example.com/api/data',
    method: 'GET',
    timeout: 10000, // 设置超时时间为10秒
    success: (res) => {
        console.log('数据请求成功:', res.data);
    },
    fail: (err) => {
        if (err.errMsg.indexOf('timeout') !== -1) {
            console.error('请求超时');
        } else {
            console.error('请求失败:', err);
        }
    }
});

3. 跨域问题

错误描述:前端和后端不在同一个域下,导致跨域请求被浏览器阻止。

处理代码(注意:uni-app通常打包成小程序或App,不涉及直接的浏览器跨域问题,但如果是Web平台,需服务器支持CORS):

// 后端设置CORS(示例代码,需后端人员配合)
// 假设使用Node.js + Express
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());

// 前端无需额外代码,确保后端正确设置即可
uni.request({
    url: 'https://backend.example.com/api/data',
    method: 'GET',
    success: (res) => {
        console.log('数据请求成功:', res.data);
    },
    fail: (err) => {
        console.error('请求失败:', err);
    }
});

4. 参数错误或缺失

错误描述:请求参数不符合后端接口要求。

处理代码

uni.request({
    url: 'https://example.com/api/data',
    method: 'POST',
    data: {
        key1: 'value1',
        key2: 'value2'
    },
    header: {
        'Content-Type': 'application/json'
    },
    success: (res) => {
        console.log('数据请求成功:', res.data);
    },
    fail: (err) => {
        console.error('请求失败,检查参数:', err);
    }
});

以上代码示例展示了如何处理uni.request请求中可能遇到的几种常见错误。根据具体的错误类型和错误信息进行针对性的处理是关键。

回到顶部