我需要使用包含Array的JSON创建一个post请求。 http.post
方法仅接受Map<String, String>
。因此,我无法传递类型为<String,dynamic>
的Map,因为Map将包含List。这是我的明确HttpClientRequest
:
String jsonString = json.encode(body); // encode map to json
List<int> bodyBytes = utf8.encode(jsonString); // utf8 encode
HttpClient client = new HttpClient();
HttpClientRequest request = await client.postUrl(uri);
// it's polite to send the body length to the server
request.headers.set('Content-Length', bodyBytes.length.toString());
request.headers.set('Authorization', '...');
request.headers.set('X-Authorization', apiKey);
request.headers.set("Accept", "application/json");
request.headers.set('Content-Type', 'form-data');
request.add(bodyBytes);
HttpClientResponse response = await request.close();
response.transform(utf8.decoder).listen((contents) {
// handle data
return jsonDecode(contents);
});
问题是,上述请求失败。
编辑:
创建的json是:
{
"subject":"PLEASE",
"message":"JUST. WORK.",
"filter":"[8]",
}
但服务器期望的JSON是:
{
"subject":"PLEASE",
"message":"JUST. WORK.",
"filter":[8],
}
我主要担心的是如何创建一个JSON数组...
答案 0 :(得分:0)
发现问题。有两个主要问题:
List
时将Map
转换为JSON字符串。仅将List
直接添加到Map
后,它似乎生成了正确的JSON。感谢@Edman增加了一些方向。