美文网首页
ReactNative之网络请求(十三)

ReactNative之网络请求(十三)

作者: 攻克乃还_ | 来源:发表于2017-10-16 23:04 被阅读8次

    一、GET请求

     static Get(url,param,success,failure){
            /**
                var param = {
                name:'abc',
                age:20
             }
            **/
            // 拼接参数
            if(param){
                var keys = Object.keys(param);
                var totalParam = '';
                keys.forEach((key,i)=>{
                    var mark = '?';
                    if (i > 0) {
                        mark = '&'
                    }
                    var value = param[key];
                    totalParam += mark;
                    totalParam = totalParam + key + '=' + value;
                })
                url = url + totalParam;
            }
            // 发送请求
            fetch(url)
                .then((response)=>response.json())
                .then((json)=>{
                    // 请求成功,并且解析数据为json的时候调用
                    if(success){
                        success(json);
                    }
                })
                .catch((error)=>{
                    if(failure){
                        failure(error);
                    }
                })
        }
    

    二、Post请求:

        // Post的数据格式
        static ParamType = {
            ParamTypeJSON:'application/json',
            ParamTypeURL:'application/x-www-form-urlencoded'
        }
       // 数据格式为URL:'application/x-www-form-urlencoded'
        static PostWithUrlParam(url,param,success,failure){
           this.Post(url,param,this.ParamType.ParamTypeURL,success,failure);
        }
        // 数据格式为JSON:'application/json'
        static PostWithJsonParam(url,param,success,failure){
            this.Post(url,param,this.ParamType.ParamTypeJSON,success,failure);
        }
        // 处理请求参数
        static resolveParam(param,paramType){
            // 没有参数,返回空
            if (!param) return '';
            if(paramType == 'application/json'){
                return JSON.stringify(param);
            } else if (paramType == 'application/x-www-form-urlencoded'){
                // 获取key
                var totalParam = '';
                var i = 0;
                for (key in param){
                    var mark = '';
                    if (i > 0){
                        mark = '&'
                    }
                    var value = param[key];
                    //  name=abc&age=20
                    totalParam += mark + key + '=' + value;
                    i++;
                }
                return totalParam;
            }
        }
    
        static Post(url,param,paramType,success,failure){
            // 处理请求参数
            this.resolveParam(param,paramType);
            var body = JSON.stringify(param);
            // 定制请求
            var optionals = {
                method:'POST',
                headers:{
                    'Content-Type':paramType
                },
                body:body
            }
            // 发送请求
            fetch(url,optionals)
                .then((response)=>response.json())
                .then((json)=>{
                    if(success){
                        success(json);
                    }
                })
                .catch((error)=>{
                    if(failure){
                        failure(error);
                    }
                })
        }
    

    相关文章

      网友评论

          本文标题:ReactNative之网络请求(十三)

          本文链接:https://www.haomeiwen.com/subject/fziluxtx.html