flutter dio网络请求 get post 图片上传
Dio下载地址github:dio
初始化网络请求
BaseOptions option = BaseOptions();
//初始化cotentType
option.contentType = ContentType.parse("application/json;charset=UTF-8");
//设置请求头参数
option.headers = {'token':'ab2343sdfsdfsfsdf1213123'};
//创建Dio
Dio dio = Dio(option);
发起get或者post请求
get
/*get请求*/static Future<AjaxResult> get(String url, {Map params}) async {if (params != null && params.isNotEmpty) {// 如果参数不为空,则将参数拼接到URL后面StringBuffer sb = StringBuffer("?");params.forEach((key, value) {sb.write("$key" + "=" + "$value" + "&");});String paramStr = sb.toString();paramStr = paramStr.substring(0, paramStr.length - 1);url += paramStr;}print('url---> $url');Dio dio = getDio();try {Response res = await dio.get(url);// var re = Utf8Decoder().convert(res.data);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) { print(e);FuntionUtil.toast(e.message);}}
post请求
static Future<AjaxResult> post(String url, {Map<String,dynamic> params}) async {// final paramsjson = jsonEncode(params);print('url---> $url params--->$params');Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, queryParameters: params);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;// var re = Utf8Decoder().convert(res.data);} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}
图片上传
static Future<AjaxResult> upload(String url, File imgfile,{Map<String, String> params}) async {// final paramsjson = jsonEncode(params);String path = imgfile.path;var name = path.substring(path.lastIndexOf("/") + 1, path.length);FormData formData = new FormData.from({"Filedata": new UploadFileInfo(File(path), name),"size":"0","majia":"zhaowojie",// 'Files[]': [new UploadFileInfo(File(path), "sa"),new UploadFileInfo(File(path), name)],});Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, data: formData);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}
完整代码
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutte_xms/model/ajaxresult.dart';
import 'package:flutte_xms/model/usermodel.dart';
import 'package:flutte_xms/util/func_util.dart';
import 'package:flutte_xms/util/usermanager.dart';class DioReq {/*get请求*/static Future<AjaxResult> get(String url, {Map params}) async {if (params != null && params.isNotEmpty) {// 如果参数不为空,则将参数拼接到URL后面StringBuffer sb = StringBuffer("?");params.forEach((key, value) {sb.write("$key" + "=" + "$value" + "&");});String paramStr = sb.toString();paramStr = paramStr.substring(0, paramStr.length - 1);url += paramStr;}print('url---> $url');Dio dio = getDio();try {Response res = await dio.get(url);// var re = Utf8Decoder().convert(res.data);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) { print(e);FuntionUtil.toast(e.message);}}/*post请求*/static Future<AjaxResult> post(String url, {Map params}) async {// final paramsjson = jsonEncode(params);print('url---> $url params--->$params');Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, data: params);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;// var re = Utf8Decoder().convert(res.data);} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}/*图片上传*/static Future<AjaxResult> upload(String url, File imgfile,{Map<String, String> params}) async {// final paramsjson = jsonEncode(params);String path = imgfile.path;var name = path.substring(path.lastIndexOf("/") + 1, path.length);FormData formData = new FormData.from({"Filedata": new UploadFileInfo(File(path), name),"size":"0","majia":"zhaowojie",// 'Files[]': [new UploadFileInfo(File(path), "sa"),new UploadFileInfo(File(path), name)],});Dio dio = getDio();try {// var body = json.encode(paramsjson);Response res = await dio.post(url, data: formData);print(res);final re = AjaxResult.fromJson(json.decode(res.data));return re;} on DioError catch (e) {print(e);FuntionUtil.toast(e.message);}}static Dio getDio() {BaseOptions option = BaseOptions();option.contentType = ContentType.parse("application/json;charset=UTF-8");//如果用户登录成功 将token带上if (UserManager.shared.isLogin) {UserInfo info = UserManager.shared.userInfo;print('appLoginToken:${info.userId}');if (info != null) {option.headers = {'userId': info.userId,};}}return Dio(option);}
}
关于AjaxResult Model
const AjaxResultStateSuccess = 0;class AjaxResult {int status;String msg;dynamic data;AjaxResult({this.status, this.msg, this.data});AjaxResult.fromJson(Map<String, dynamic> json) {status = json['status'];msg = json['msg'];data = json['data'];}Map<String, dynamic> toJson() {final Map<String, dynamic> datas = new Map<String, dynamic>();datas['status'] = this.status;datas['msg'] = this.msg;datas['data'] = this.data;return datas;}
}
怎么使用 post get upload
DioReq.post(请求的url, params: {'mobile': phone,'authCodeType': 1, }).then((res) {if (res.status == AjaxResultStateSuccess){print('验证码发送成功');}else{FuntionUtil.toast(res.msg);}},);//图片上传DioReq.upload(请求的url, forgroundImg).then((res){if(res.status == AjaxResultStateSuccess){FuntionUtil.toast(res.msg);print(res);}else{FuntionUtil.toast(res.msg);}});
flutter dio网络请求 get post 图片上传相关推荐
- android上传头像 sockettimeoutexception,Kotlin - Retrofit2和Rxjava2封装的网络请求类(含图片上传)...
阅读建议:本文适合熟悉Retrofit与Rxjava2的同学阅读,其中也包含一丢丢的RxLifecycle,文中不包含这两个库的使用说明.不熟悉RxJava的同学,建议去这里了解,里面包含3篇文章,均 ...
- Android 利用an框架快速实现网络请求(含下载上传文件)
作者:Bgwan 链接:https://zhuanlan.zhihu.com/p/22573081 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架 ...
- Flutter Dio网络请求:DioError [DioErrorType.RESPONSE]: Http status error [400]或者[500]
DioError [DioErrorType.RESPONSE]: Http status error [400] 1)检查请求参数是否正确 : 比如,如果参数map中value是一个数组,如下代码中 ...
- Go语言练习:网络编程实例——简易图片上传网站
1.代码结构 $ tree . ├── photoweb.go ├── public │ ├── css │ ├── images │ └── js ├── uploads └── views├── ...
- java图片加水印上传工具类_基于Spring Boot实现图片上传/加水印一把梭操作
文章共537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 ...
- 微信小程序多图片上传全栈实战
本篇教程技术栈:springBoot(Java后端)+ 微信小程序.完整的图片上传教程. 页面截图,点击图片右上角按钮可以删除图片. 1.图片上传需要使用wx.uploadFile(Object o ...
- java spring上传图片_基于Spring Boot实现图片上传/加水印一把梭操作
文章共 537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现 ...
- flutter网络请求dio的get、post、上传文件、下载文件总结
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 flutter中网络请求dio使用分析 视频教程在这里 Flutter 从入门实践到开发一个APP之UI基础 ...
- AFNetworking网络请求与图片上传工具(POST)
AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h>/** 成功Block */ typedef voi ...
最新文章
- Android APP全面屏适配技术要点
- 找到IIS Express配置/配置数据库文件在哪里?
- jvm性能调优实战 - 45无限制的调用方法导致栈溢出OOM
- 一文读懂什么是C++移动语义《一》
- 关于html的一些杂技
- FusionCharts-堆栈图、xml格式、刷新数据、添加事件link、传参
- redis缓存跟数据库数据不一致问题解决
- 互联网公司端午节礼盒歧视指南
- 模糊聚类划分matlab代码,模糊C均值聚类算法(原理+Matlab代码) - 全文
- 3DMAX卸载/完美解决安装失败/如何彻底卸载清除干净3DMAX各种残留注册表和文件的方法...
- 大麻和烟草对表观基因组产生双重影响
- java end_Fabric学习笔记(七) - fabric-sdk-java End2endIT运行
- python中e怎么计算_蒙特卡洛法计算自然常数e——python编程及可视化
- ValueError: n_splits=n cannot be greater than the number of members in each class.
- circos个人使用教程
- 计算机网络dce是什么意思,DTE与DCE的解释
- 典型二阶系统的计算机仿真,二阶系统电路设计_RLC串联二阶电路实验报告
- 信号与系统:拉式变换(s域)求解电路的零输入、零状态响应
- ado控件连接mysql_Delphi中用ADO控件连接数据库例子
- mysql官网下载官网示例sql文件
热门文章
- 西门子1500与SMC EX260总线阀岛通讯组态
- linux :ubuntu 实用软件
- CSS(三):CSS特性与盒子模型
- JAVA插入数据库时java.sql.DataTruncation: Data truncation
- leetcode971. 翻转二叉树以匹配先序遍历
- Camtasia Studio 6录制视频时鼠标闪烁的解决办法
- 将网页保存为mht文件
- 读取.dwg文件“曲线救国”之读取.dxf
- icesword 是如何列出隐藏进程?
- 7-2 词典 (15分)19物联网张春