如何用flutter发布字符串和列表列表

时间:2019-09-24 14:15:41

标签: flutter dart

我正在尝试发送字符串和列表的映射,如下所示:

Map<String, List<int>> results = {
  "tags": [5 , 10]
}
  Object headers = {
    HttpHeaders.authorizationHeader: "Bearer ${accessToken}",
    "Accept": "application/json",
  };

我这样发布:

  post() {
    return http
        .post("$resource/$baseName/$id$query",
            headers: headers,
            body: results ,
            )
        .then((http.Response response) {
        return json.decode(response.body);
    }).catchError((err) {
      print(err);
    });
  }

我收到此错误:

type 'List<int>' is not a subtype of type 'String' in type cast

我想我也应该发送

Map<String,String>

但我有

Map<String, List<int>>

我尝试了很多事情,但是还很陌生,所以我很困惑 谢谢有人可以帮助我。 编辑:

我尝试使用dio

try {
      Response response =
          await Dio().post("$resource/$baseName/$id$query", data: {
        'tags': [1, 2]
      },
      options: Options(headers: headers)
      );
      print(response);
    } catch (e) {
      print(e);
    }

2 个答案:

答案 0 :(得分:0)

您在发送数据时对数据进行编码吗?发送之前,请尝试对数据进行编码。您可以指定标头来接受application / json,但可能不发送json。

请参阅:https://api.dartlang.org/stable/2.5.0/dart-convert/jsonEncode.html

import 'dart:convert';

 Map<String, List<int>> results = {
  "tags": [5 , 10]
};

  final encodedResults = jsonEncode(results); // send these encoded results.

答案 1 :(得分:-1)

如何创建此地图?

是否可以在列表中启动.toString?

注意:我建议使用Dio插件,当然,它使在webServices中处理请求变得更加容易!

在这里看看:https://pub.dev/packages/dio

    
    Map<String, List<int>> results = {
       "tags": [5 , 10]
    }

    var dio = Dio();
    FormData data = FormData();

    final local = '$baseName/$id$query'

    dio.options.baseUrl = source;
    
    data.add('tags', results.toString);


    try{

      final response = await dio.post(local, data: data, options: Options(
        method: 'POST',
        responseType: ResponseType.json
      ));

      final body = jsonDecode(response.data);
      print(body);

    }catch(e){
      print(e);
      return e;
    }