美文网首页Flutter
Flutter 之 dio 请求HTTP

Flutter 之 dio 请求HTTP

作者: kindom_0129 | 来源:发表于2019-07-19 17:18 被阅读0次

    简单说明flutter使用Dio包发送请求

    1.添加依赖

    dependencies:
     dio: ^2.0.11 #latest version
    

    2.导入dio

    import 'package:dio/dio.dart';
    

    3.设置options

    //默认为post请求
        _option = Options(method: 'post');
        //连接超时时间(毫秒)
        _option.connectTimeout = 10000;
        //接收超时时间(毫秒)
        _option.receiveTimeout = 10000;
        //设置httpHeader
        _option.headers.addAll(new Map<String, dynamic>.from(headers));
    

    4.发送请求

        Dio dio = Dio();
        dio.options.baseUrl = dataSource.baseURL;
        Response response = await dio.post(path,
            data: parameters, queryParameters: parameters, options: _option);
        if (response.statusCode == 200) {
          debugPrint('请求参数: ${response.request.queryParameters}');
          debugPrint(
              '-------------------请求成功,请求结果如下:----------------- \n===请求url: ${response.request.uri.toString()} \n===请求 头: \n${_option.headers}  \n===请求结果: \n${response.data}\n');
          debugPrint('-------------------请求成功 ----------------');
        } else {
          debugPrint('-------------------请求失败-------------------');
        }
    

    注意1
    1.请求带有参数parameters时发现:使用dio.post()函数,设置data值为parameters时,实际请求中的response.request.queryParameters为空,导致后台接收不到参数,需设置queryParameters:parameters,后台才能接收到;

    2.baselURL:baseUrl都是在dio.option.baseUrl设置的;

    注意3.dio.options.method设置是无效:

    Dio dio = Dio();
    dio.options.method = 'post'; //无效
    

    解决办法:

    //新建一个Options对象,然后在发起请求的时候进行设置:
    Options option = Options(method:'post');
    Response response = await dio.request(path,data:{"data": "data"}, options: option);
    

    2019-08-05补充:
    设置queryParameters是get请求,如果post失败可以考虑是否是httpheader的内容不符,本人就碰到 Content-Type的问题,默认 Content-Type为ContentType.json需要根据自己修改:

    import 'dart:io';
    options.contentType = ContentType.parse("application/x-www-form-urlencoded");
    

    相关文章

      网友评论

        本文标题:Flutter 之 dio 请求HTTP

        本文链接:https://www.haomeiwen.com/subject/bwpslctx.html