Flutter学习(四)Http请求库|Flutter学习(四)Http请求库 dio代码封装
Flutter学习(四)Http请求库 dio代码封装
第一步 依赖库
打开flutter package网站,入口,找到dio这个组件,查看最新版本
文章图片
打开 项目根目录下 ** pubspec.yaml ** 文件
文章图片
添加库名,添加库名
文章图片
最好是填写 any(** 添加兼容版本 **),也或者直接从网站复制最新版本即可,
执行 packages get 命令,安装依赖
代码部分
import 'package:dio/dio.dart';
import 'config.dart';
//用于配置公用常量
class Http{
static Http instance;
static String token;
static Config _config = new Config();
static Dio _dio;
Options _options;
static Http getInstance(){
print("getInstance");
if(instance == null){
instance= new Http();
}
}
Http(){
// 初始化 Options
_options =new Options(
baseUrl: _config.base_url,
connectTimeout: _config.connectTimeout,
receiveTimeout: _config.receiveTimeout,
headers: {}
);
_dio = new Dio(_options);
//发送请求拦截处理,例如:添加token使用
_dio.interceptor.request.onSend = (Options options) async{
print(options.baseUrl);
return options;
};
//请求成功拦截,简化代码中调用难度
_dio.interceptor.response.onSuccess = (Response response) async{
print(response.statusCode);
return response;
};
//请求失败拦截
_dio.interceptor.response.onError = (DioError e) {
print(e);
return e;
};
}
// get 请求封装
get(url,{ options, cancelToken, data=https://www.it610.com/article/null}) async {
print('get:::url:$url ,body: $data');
Response response;
try{
response = await _dio.get(
url,
data:data,
cancelToken:cancelToken
);
}on DioError catch(e){
if(CancelToken.isCancel(e)){
print('get请求取消! ' + e.message);
}else{
print('get请求发生错误:$e');
}
}
【Flutter学习(四)Http请求库|Flutter学习(四)Http请求库 dio代码封装】return response.data;
}
// post请求封装
post(url,{ options, cancelToken, data=https://www.it610.com/article/null}) async {
print('post请求::: url:$url ,body: $data');
Response response;
try{
response = await _dio.post(
url,
data:data !=null ? data : {},
cancelToken:cancelToken
);
print(response);
}on DioError catch(e){
if(CancelToken.isCancel(e)){
print('get请求取消! ' + e.message);
}else{
print('get请求发生错误:$e');
}
}
return response.data;
}
}
调用
页面中引入文件:
文章图片
import ‘util/http.dart’;
var response = await Http().get(
"tree/json",
data: {'pageIndex': 1, 'pageSize': 10});
print(response);
6.解析数据
官方推荐使用json_serializable进行数据解析
下一章节贴上json_serializable的使用方法供大家参考,欢迎指正和互相交流;
推荐阅读
- 跌跌撞撞奔向你|跌跌撞撞奔向你 第四章(你补英语,我补物理)
- 奔向你的城市
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 四首关于旅行记忆的外文歌曲
- CET4听力微技能一
- 亲子日记第186篇,2018、7、26、星期四、晴
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案