IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter Dio网络请求异常处理 -> 正文阅读

[移动开发]Flutter Dio网络请求异常处理

参考

  try {
    Response r = await dio.get("https://www.instagram.com");
    print(r.headers);
  }on DioError catch(e){
     print(e);
     print(e.response.statusCode);
  }

我的代码操作如下

  void _submitData () async {
    try {
      //处理图片
      List<MultipartFile> imageList = new List<MultipartFile>();
      for (Asset asset in images) {
        //将图片转为二进制数据
        ByteData byteData = await asset.getByteData();
        List<int> imageData = byteData.buffer.asUint8List();
        MultipartFile multipartFile = new MultipartFile.fromBytes(
          imageData,
          //这个字段要有,否则后端接收为null
          filename: 'load_image',
          //请求contentType,设置一下,不设置的话默认的是application/octet/stream,后台可以接收到数据,但上传后是.octet-stream文件
          contentType: MediaType("image", "jpg"),
        );
        imageList.add(multipartFile);
      }

      FormData formData = FormData.fromMap({
        //后端要用multipartFiles接收参数,否则为null
        "photos" : imageList,
        "text" : _momentController.text
      });
      // var res = await Dio().post("你的URL", data: formData);
      //后面随意发挥
      var apiUrl = "http://47.242.63.216:9527/v1/moment";
      SharedPreferences prefs = await SharedPreferences.getInstance();
      var tokens = prefs.getString("token");

      // 后端接口的其他参数
      Map<String, dynamic> params = Map();

      //网络请求添加token请求头
      Response result = await Dio().post(apiUrl,
          data: formData, options: Options(headers: {"x-token": tokens}));
      debugPrint("${result}");
      // 使用 dio 上传图片
      // var response = await dio.post(url, data: formData, queryParameters: params);
      //
      // do something with response...
      //json解析
      Map<String, dynamic> authCode = json.decode(result.toString());
      var mes = PublishMomentData.fromJson(authCode);
      if (mes.code == 200) {
        Fluttertoast.showToast(
            msg: "发布成功",
            toastLength: Toast.LENGTH_SHORT,
            gravity: ToastGravity.CENTER,
            timeInSecForIosWeb: 10,
            backgroundColor: Colors.white,
            textColor: Colors.black,
            fontSize: 16.0);
        //返回动态界面
        Navigator.pop(context);
        Navigator.pop(context);
      } else {
        Fluttertoast.showToast(
            msg: "发布失败",
            toastLength: Toast.LENGTH_SHORT,
            gravity: ToastGravity.CENTER,
            timeInSecForIosWeb: 10,
            backgroundColor: Colors.white,
            textColor: Colors.black,
            fontSize: 16.0);
      }
    }on DioError catch(e){
      Fluttertoast.showToast(
          msg: "${e}",
          toastLength: Toast.LENGTH_SHORT,
          gravity: ToastGravity.CENTER,
          timeInSecForIosWeb: 10,
          backgroundColor: Colors.white,
          textColor: Colors.black,
          fontSize: 16.0);
      print(e);
      print(e.response.statusCode);
    }
  }
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 10:04:11  更:2022-05-14 10:04:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 1:46:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码