heesim
heesim
  • 发布:2020-05-29 17:42
  • 更新:2021-08-06 16:02
  • 阅读:3699

相同的接口IOS请求失败,errMsg":"request:fail abort statusCode:-1

分类:uni-app

代码如下

upload(){  
                var data = [{  
                                                    "value": 27.1,  
                            "iValue": 27.1,  
                            "timepoint": "2020-05-29 16:22:34",  
                            "deviceCode": "BAEC0000005118"  
                        }];  
                var url =  api.uploadUsertempUrl();  
                console.log(url)  
                anti.sendRequest({  
                    url:url,  
                    data: data,  
                    method: "POST",  
                    success(res) {  
                        if (res.statusCode != 200) {  
                            console.log("数据上传失败", JSON.stringify(res))  
                            return  
                        }  
                    },  
                    fail(res){  
                        console.log('上传远程数据库失败',JSON.stringify(res))  
                    },  
                    complete(res){  
                        console.log('上传远程数据库完成',JSON.stringify(res))  
                        console.log("请求api:",api.uploadUsertempUrl())  
                    }  
                })  
            }  

// anti.sendRequest 是自己封装的请求方式,具体如下  
function sendRequest(options){  
    const token = uni.getStorageSync(constants.TOKEN_KEY);  
    var header = {};  
    if (token == null || token == ""){  
        header = {  
            'Content-Type': 'application/json;charset=UTF-8'  
        }  
    } else {  
        header = {  
            'Content-Type': 'application/json;charset=UTF-8',  
            'Authorization': "Bearer "+token  
        }  
    }  
    if(options.method){  
        options.method = options.method.toUpperCase();//小写改为大写  
    }  
    uni.request({  
        url: options.url,  
        data: options.data,  
        header: header,  
        sslVerify: false,  
        method: options.method || "GET",  
        timeout: options.timeout || 30000,  
        dataType: options.dataType || 'json',  
        responseType: options.responseType || 'text',  
        success(res){  
            typeof options.success == "function" && options.success(res);  
        },  
        fail(res){  
            typeof options.fail == "function" && options.fail(res);  
        },  
        complete(res){  
            typeof options.complete == "function" && options.complete(res);  
        }  
    })  
}

IOS执行结果如图

安卓平台可以正常运行并获得返回

BUG机型:IPHONE6
ISO版本:11.2.6
HBUILDER版本:2.6.16.20200424

2020-05-29 17:42 负责人:无 分享
已邀请:
heesim

heesim (作者) - zsp

问题已经解决了,这是个坑。
官方文档上说uni.request在content-type:application/json时会尝试对data进行序列化。
手动将原本是json的数据转成字符串传进去就可以了,希望官方可以对这一块进行优化吧。

upload(){    
                var data = [{    
                                                    "value": 27.1,    
                            "iValue": 27.1,    
                            "timepoint": "2020-05-29 16:22:34",    
                            "deviceCode": "BAEC0000005118"    
                        }];    
                var url =  api.uploadUsertempUrl();    
                console.log(url)    
                anti.sendRequest({    
                    url:url,    
                    data: JSON.stringfy(data),    
                    method: "POST",    
                    success(res) {    
                        if (res.statusCode != 200) {    
                            console.log("数据上传失败", JSON.stringify(res))    
                            return    
                        }    
                    },    
                    fail(res){    
                        console.log('上传远程数据库失败',JSON.stringify(res))    
                    },    
                    complete(res){    
                        console.log('上传远程数据库完成',JSON.stringify(res))    
                        console.log("请求api:",api.uploadUsertempUrl())    
                    }    
                })    
            } 
heesim

heesim (作者) - zsp

可以确定不是网络的问题,在执行登录请求的另一台服务器是可以请求成功的。

飞飞飛飛

飞飞飛飛

我也是这个问题,微信小程序请求没问题,别的接口也没问题,就一个接口在IOS真机运行的时候一直提示这个。请问你解决了吗?

  • heesim (作者)

    没有,之前也没做过IOS开发,找不出来原因在哪。

    2020-06-04 14:55

  • 1***@qq.com

    你好,请问你解决了吗

    2021-12-01 16:18

3***@qq.com

3***@qq.com - 企点邦

这样转也不行 ios提交不了数据 错误提示-1

按时付款撒

按时付款撒 - 啊实打实打算

我的是安卓不行,ios可以

1***@qq.com

1***@qq.com

也可能是手机没联网的问题https://blog.csdn.net/Bright2017/article/details/105244319/

1***@qq.com

1***@qq.com - 小罗爱编程

遇到了相同问题,将json转为字符串也不行,求解!

该问题目前已经被锁定, 无法添加新回复