zoukankan      html  css  js  c++  java
  • 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);
          }
        });
    
  • 相关阅读:
    23-10 条件查询
    22-9 聚合函数
    关系抽取snowball
    关系抽取bootstrap
    NER
    GPT
    因果卷积 空洞卷积
    XL-NET
    transoformer-XL
    transoformer
  • 原文地址:https://www.cnblogs.com/qqcc1388/p/12371930.html
Copyright © 2011-2022 走看看