uni-app 离线打包HTTP请求报错

uni-app 离线打包HTTP请求报错

开发环境 版本号 项目创建方式
Windows 21H1 HBuilderX
Android 9.0

示例代码:

app.$u.service  
    .login({  
        mobile: this.mobile,  
        mima: Base64.encode(this.mima)  
    })  
    .then(res => {  
        this.state_text = res.message;  
        this.tem_user = res.validateMap;  
        app.$api.msg({  
            title: `${res.message}`  
        });  
        if (res.code * 1 == 1) {  
            app.$u.vuex('vuex_under_line', false); //没有被挤下来  
            uni.hideLoading();  
            // #ifdef APP-PLUS  
            app.$u.service.inspectDownload([this.tem_user], 'headUrl', 200, 200).then(rw => {  
                console.log(rw);  
                // 请求成功就去查缓存 ; 有缓存的话清理掉重写 ; 没缓存的话 那没事了  
                app.$u.vuex('vuex_token', this.tem_user.apiKey);  
                app.$u.vuex('vuex_user', this.tem_user);  
                // 刷新token // 这几行的代码请不要变动顺序  
                app.$u.http.setConfig();  

                app.$u.api.getUserSchoolList({}).then(res => {  
                    app.$u.vuex('vuex_schoolList', res);  

                    if (res.length > 1) {  
                        // 学效列表大于 1 就是存在可以切换的学校  
                        app.$u.route({ url: '/pages/switchGarden/index', type: 'reLaunch' });  
                    } else {  
                        setTimeout(() => {  
                            app.$u.route({ url: '/pages/index/index', type: 'reLaunch' });  
                        }, 600);  
                    }  
                });  
            });  
            // #endif  

            // #ifdef H5 || MP-WEIXIN  

            app.$u.vuex('vuex_token', this.tem_user.apiKey);  
            app.$u.vuex('vuex_user', this.tem_user);  

            // 刷新token // 这几行的代码请不要变动顺序  
            app.$u.http.setConfig();  
            app.$u.api.getUserSchoolList({}).then(res => {  
                app.$u.vuex('vuex_schoolList', res);  

                if (res.length > 1) {  
                    // 学效列表大于 1 就是存在可以切换的学校  
                    console.log('切换园所');  
                    console.log(app.vuex_schoolList);  
                    app.$u.route({ url: '/pages/switchGarden/index', type: 'reLaunch' });  
                } else {  
                    setTimeout(() => {  
                        app.$u.route({ url: '/pages/index/index', type: 'reLaunch' });  
                    }, 600);  
                }  
            });  

            // #endif

操作步骤:

  • 点击登录无反应,AndroidStudio报错

预期结果:

  • 点击登录能够正常登录

实际结果:

  • 点击登录无反应,AndroidStudio报错

bug描述:

  • uniapp离线打包,在原设备上正常,换一台设备访问http请求的时候报错


更多关于uni-app 离线打包HTTP请求报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

原因找到了,是因为安卓设备的型号是中文的,使用adb将型号改成英文的就可以了

更多关于uni-app 离线打包HTTP请求报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


从您提供的错误信息来看,离线打包后HTTP请求失败主要涉及网络安全配置问题。以下是关键分析:

  1. Android 9.0网络安全性限制:从Android 9(API级别28)开始,默认禁止明文HTTP流量。您的应用可能尝试访问非HTTPS接口,触发CLEARTEXT_NOT_PERMITTED错误。

  2. 解决方案

    • 配置network_security_config:在manifest.json的App模块配置中,勾选“允许HTTP请求”。这会在原生配置中生成对应的网络安全配置。
    • 或手动在AndroidManifest.xml<application>标签内添加:
      android:usesCleartextTraffic="true"
回到顶部