ITPub博客

首页 > IT职业 > IT职场 > RN实战项目网络请求封装

RN实战项目网络请求封装

IT职场 作者:ghost_hand 时间:2021-09-09 10:16:12 0 删除 编辑

import React,{Component} from ‘react’;

//这里引入了一个md5加密的库,Github https://github.com/kmend/react-native-md5
//引入方式很简单,npm install react-native-md5 --save
//然后打开项目的package.json 查看,发现此时多了一个依赖

import MD5 from “react-native-md5”;
import {
ToastAndroid,
} from ‘react-native’;


export default class NetUtils extends Component{

//构造函数,默认的props,以及state 都可以在这里初始化了
constructor(props){
super(props);
}


static get(url,params,callback){
fetch(url,{
method:‘GET’,
body:params
})
.then((response) => {
if(response.ok){//如果相应码为200
return response.json(); //将字符串转换为json对象
}
})
.then((json) => {
//根据接口规范在此判断是否成功,成功后则回调
if(json.resultCode === “SUCCESS”){
callback(json);
}else{
//否则不正确,则进行消息提示
//ToastAndroid 只针对安卓平台,并不跨平台
ToastAndroid.show(json.resultDesc,ToastAndroid.SHORT);
}
}).catch(error => {
ToastAndroid.show(“netword error”,ToastAndroid.SHORT);
});
};


static post(url,service,params,callback){
//添加公共参数
var newParams = this.getNewParams(service,params);//接口自身的规范,可以忽略

fetch(url,{
method:‘POST’,
headers:{
‘Content-Type’: ‘application/x-www-form-urlencoded;charset=UTF-8’//key-value形式
},
body:newParams
})
.then((response) => {
if(response.ok){
return response.json();
}
})
.then((json) => {
if(json.resultCode === “SUCCESS”){
callback(json);
}else{
ToastAndroid.show(json.resultDesc,ToastAndroid.SHORT);
}
}).catch(error => {
alert(error);
//ToastAndroid.show(“netword error”,ToastAndroid.SHORT);
});
};


static postJson(url,service,jsonObj,callback){
fetch(url,{
method:‘POST’,
headers:{
‘Content-Type’: ‘application/json;charset=UTF-8’
},
body:JSON.stringify(jsonObj),//json对象转换为string
})
.then((response) => {
if(response.ok){
return response.json();
}
})
.then((json) => {
if(json.resultCode === “SUCCESS”){
callback(json);
}else{
ToastAndroid.show(json.resultDesc,ToastAndroid.SHORT);
}
}).catch(error => {
ToastAndroid.show(“netword error”,ToastAndroid.SHORT);
});
};


static getCurrentDate(){
var space = “”;
var dates = new Date();
var years = dates.getFullYear();
var months = dates.getMonth()+1;
if(months<10){
months = “0”+months;
}

var days = dates.getDate();
if(days<10){
days = “0”+days;
}

var hours = dates.getHours();
if(hours<10){
hours = “0”+hours;
}

var mins =dates.getMinutes();
if(mins<10){
mins = “0”+mins;
}

var secs = dates.getSeconds();
if(secs<10){
secs = “0”+secs;
}
var time = years+space+months+space+days+space+hours+space+mins+space+secs;
return time;
};


static getNewParams(service,oldParams){
var newParams = “”;
var currentDate = this.getCurrentDate();
var MD5KEY = “XXXXXX”;
var digestStr = MD5KEY+service+currentDate+MD5KEY;
newParams = oldParams+"&timestamp="+currentDate+"&digest="+this.MD5(digestStr);
return newParams;
};


static MD5(str){
return MD5.hex_md5(str);
};


static getCurrentDateFormat(){
var space = “”;
var dates = new Date();
var years = dates.getFullYear();
var months = dates.getMonth()+1;
if(months<10){
months = “0”+months;
}

var days = dates.getDate();
if(days<10){
days = “0”+days;
}
var time = years+space+months+space+days;
return time;
};
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1059/viewspace-2819387/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    81
  • 访问量
    444