React Native Get,Post请求
来源:互联网 发布:java jdk 1.6 for mac 编辑:程序博客网 时间:2024/06/16 06:46
React Native为我们提供了fetch框架进行网络请求。
Fetch请求
static async request(url, method, body, params) { DEBUG && console.log("#REQUEST NetUtil# [" + method + "] url=" + url + ",body=" + body); var timestamp=new Date().getTime()/1000;//当前时间毫秒值 var user=await AsyncStorage.getItem('user');//缓存本地的用户数据 var token='';//用户token if(user!=null){ token=JSON.parse(user).token; }else{ token=''; } var sign= await Sign.createSign(params,timestamp);//获取签名 return new Promise((resolve, reject)=> { fetch(url, { method: method, body: body, headers: new Headers({ 'uid': '867909021770429', 'token':token, 'timestamp':timestamp, 'sign':sign,//签名 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'close' }), }) .then((response)=> { if(response.ok){ return response.json(); }else{ reject("服务器错误!"); } }) .then((json)=> { DEBUG && console.log("#RESPONSE# NetUitl ["+method+"] url = "+url+", body = "+body+",responseData="+json); if(json.code==Constant.SUCCESS){ resolve(json.data); }else{ reject(data.msg); } }) .catch((error)=> { DEBUG && console.log("#RESPONSE# NetUitl ["+method+"] url = "+url+", body = "+body+", error="+error); reject("服务器错误!"); }); }); }
通过fetch()函数我们可以指定请求的url,请求的method,请求的body以及请求的headers,fetch函数返回一个Promist对象,请求成功后会返回请求的Response对象,response.ok会过滤掉404,500这些请求错误,通过response.json()方法我们就可以获得JOSN格式的服务器返回给我们的数据。
Get请求
//get请求 params为一个Map对象 static get(url, params) { if (params) { let paramsArray = [] for(var item of params.entries()){ paramsArray.push(item[0]+'='+encodeURIComponent(item[1])); } if (url.search(/\?/) === -1) {//拼接url url += '?' + paramsArray.join('&') } else { url += '&' + paramsArray.join('&') } } return this.request(url, 'get', undefined, params); }
Post请求
//pos请求 static post(url, params) { var body = ''; for (let item of params.entries()) {//拼接body body += item[0] + "=" + item[1] + "&"; } body = body.substring(0, body.length - 1); return this.request(url, 'post', body, params); }
使用
- get方式
var params = new Map(); params.set('pageNo', 1); params.set('pageSize', 20); params.set('version', '1.0.1'); params.set('platform', 'android'); params.set('provinceCode', '310000'); return dispatch=> { NetUtil.get(HttpUrl.QUERY_DYNAMIC_LIST, params) .then((result)=> { console.log(result); dispatch({ type: ActionTypes.ACTION_DYNAMIC_LIST, dynamicList: result, }) }, (error)=> { console.log('error' + error); }); }
- post方式
var params=new Map();//请求的参数 params.set('username',this.state.username); params.set('password',this.state.password); params.set('cid','53b857f07b3ace9bdb2b99e0d65dc123'); params.set('loDeviceInfo','AndroidA31'); params.set('platfrom','Android'); NetUtil.post(HttpUrl.LOGIN_URL,params) .then((result)=>{ AsyncStorage.setItem("user",JSON.stringify(result));//保存用户数据到本地 NavigatorRoute.replaceToMainScene(this.props.navigator);//跳转到主页 },(error)=>{ ToastAndroid.show(error,ToastAndroid.SHORT); });
源码
0 0
- React Native Get,Post请求
- React-Native get和post请求
- React Native 中POST请求参数传递
- React native webview post请求 参数错误
- 有关react-native POST请求造成Network request failed解决方法
- React Native 采用Fetch方式发送跨域POST请求
- React Native 采用Fetch方式发送跨域POST请求
- React Native ---fetch 之GET请求带参数
- GET请求 Post请求
- get请求 post请求
- Get请求 Post请求
- React Native网络请求
- React Native 网络请求
- 16.POST、GET请求
- iOS get post请求
- http post get 请求
- IOS Get、Post请求
- get post请求
- 【文档】web系统非功能性需求
- 欢迎使用CSDN-markdown编辑器
- css遮盖层DEMO
- spring动态设置多数据源
- js 计算总页数的最高效方式
- React Native Get,Post请求
- Linux开发--使用Memory barrier实现无锁环形缓冲区
- Python的global语句使用
- 算法回望——插入排序
- git换行符LF与CRLF转换问题
- Nginx正反向代理、负载均衡等功能实现配置
- poj 3352 求双连通分量 (无向图)
- 前端实时可视化开发工具
- 4412驱动-平台总线驱动 9th_led_bus_drv_dev