我正在尝试发送字符串和列表的映射,如下所示:
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);
}
答案 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;
}