flutter 实现put请求

 static Future<Map<String,dynamic>> put(String url, {data, method}) async {
    data = data ?? {};
    method =   'PUT';

    Dio dio = createInstance();
   
    data.forEach((key, value) {
      if (url.indexOf(key) != -1) {
        url = url.replaceAll(':$key', value.toString());
      }
    });
    data.forEach((key, value) {
      para = para+"${key}=${value}&";
    });
    para = para.substring(0,para.length-1);

    print(">>>${para}");
   para = encodeBase64("type=check");
   // url = url+"?"+"payload=${para}";
    /// 打印请求相关信息:请求地址、请求方式、请求参数
    print('请求地址:【' + method + '  ' + url + '】');
    print('请求参数:' + data.toString());
    Map<String,String> resultpara = Map();

    resultpara["payload"]= para;
    var result;
    try {
      Response response = await dio.request(url,queryParameters:data,data: "payload=${para}",
           options: new Options(method: method));

      result = response.data;

      /// 打印响应相关信息
      print('响应数据:' + response.toString());
    } on  Error catch (e) {
      /// 打印请求失败相关信息
      print('请求出错:' + e.toString());
      Fluttertoast.showToast(msg: "请求出错");
      dio.reject(e);
     // rethrow;
    }

    return result;
  }

关键是url参数放在queryparameters里面,payload参数放在data里面。网上的很多都没有用,可能是我们后端实现不规范的原因吧

发布了310 篇原创文章 · 获赞 69 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/nimeghbia/article/details/102893273