uni-app发送的请求在h5上可正常获取数据,但微信小程序无法获取,请求返回code:0,msg: "Unknown error8888"

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

uni-app发送的请求在h5上可正常获取数据,但微信小程序无法获取,请求返回code:0,msg: “Unknown error8888”

请求封装

carduser 函数

const carduser = async () => {
    const usercardapi = await usercard({
        mid: mid.value,
        user_id: store.userid
    });
    console.log('用户名片', usercardapi);
    card.value = usercardapi.data;
};

usercard 函数

export function usercard(data) {
    return http('user/user_card', data)
}

http 函数

export default function http(url, data, method = 'POST') {
    return new Promise((resolve) => {
        // 显示框加载中提示
        uni.showLoading({
            title: '加载中',
            mask: true
        });

        // 发起请求
        uni.request({
            // 封装地址 + 后端给的接口即可
            url: baseurl + url,
            // 请求携带的数据
            data: data,
            // 默认post
            method,
            // 请求头
            header: {
                // 请求头修改为后端返给你接口的 请求头即可
                'Content-Type': 'application/json',
                "token": uni.getStorageSync('token'),
                // 后续进入正式要进行加密
                // "xec-cookie-t": timeString,
                // "xec-cookie-v": AESEncryptor.encode(to: aesString),
            },
            // 成功的回调
            success: (res) => {
                // 解析返回数据
                resolve(res.data);
                // 如果返回的code是 404,跳转到登录页面  404登录失败
                if (res.data.code == '404') {
                    uni.navigateTo({
                        url: '/pagesA/login/login'
                    });
                    return;
                }
                // 如果返回的 code 是 1,表示请求成功
                if (res.data.code == '1') {
                    // 隐藏加载中提示框
                    uni.hideLoading();
                } else {
                    // 否则显示错误信息
                    uni.hideLoading();
                    uni.$u.toast(res.data.msg);
                }
            },
            fail: (err) => {
                console.log(err);
            }
        });
    });
}

1 回复

在处理uni-app开发时,遇到H5平台正常但微信小程序请求失败的问题,通常涉及微信小程序的网络请求配置、权限设置或请求代码本身的问题。以下是一些可能的解决方案,主要通过代码示例来展示如何排查和修正这些问题。

1. 检查微信小程序的合法域名配置

微信小程序要求所有网络请求必须事先在微信公众平台上配置合法域名。请确保你的请求URL已被添加到微信小程序后台的“开发 - 开发设置 - 服务器域名”中。

2. 检查请求代码

确保你的uni-app请求代码在微信小程序环境下正确执行。以下是一个使用uni.request发送GET请求的示例:

uni.request({
    url: 'https://your-api-domain.com/api/path', // 确保此URL已在微信小程序后台配置
    method: 'GET',
    header: {
        'content-type': 'application/json'
    },
    success: (res) => {
        console.log('请求成功', res.data);
    },
    fail: (err) => {
        console.error('请求失败', err);
        // 特别检查err.code和err.msg
        if (err.code === 0 && err.msg === "Unknown error8888") {
            // 自定义错误处理逻辑
            uni.showToast({
                title: '请求出错,请稍后再试',
                icon: 'none'
            });
        }
    }
});

3. 检查服务器响应

由于错误信息中包含"Unknown error8888",这看起来像是服务器端自定义的错误代码。检查后端服务器是否对微信小程序的请求做了特殊处理,或者是否因为某些请求头或参数不正确而返回了此错误。

4. 使用开发者工具的网络请求面板

在微信开发者工具中,利用“网络”面板监控请求和响应。检查请求是否成功发出,响应状态码,以及返回的具体内容。这可以帮助你确认是请求发送问题还是服务器响应问题。

5. 检查CORS(跨域资源共享)设置(仅针对H5)

虽然这一步骤对于微信小程序不适用,但确认H5平台上CORS设置正确可以避免一些混淆。确保服务器对于来自H5页面的跨域请求返回了正确的CORS头部。

结论

由于错误信息"Unknown error8888"看起来是自定义的,重点应放在后端服务的错误处理和微信小程序的请求配置上。确保所有网络请求都遵循微信小程序的规范,并且后端服务能够正确识别和处理来自微信小程序的请求。如果问题依旧存在,可能需要进一步与后端开发团队沟通,确认服务器端的错误日志和具体实现细节。

回到顶部