http - 使用 JSON 数组的 Flutter POST

标签 http dart flutter

我需要使用包含数组的 JSON 创建发布请求。 http.post方法只接受 Map<String, String> .因此,我无法传递 <String,dynamic> 类型的 map 。因为 map 将包含一个列表。这是我的显式 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 数组...

最佳答案

发现问题。有两个主要问题:

  1. 我在将 List 添加到 Map 时将其转换为 JSON 字符串。仅将 List 直接添加到 Map 之后,它似乎生成了正确的 JSON。
  2. 请求头中的content-type必须设置为application/json。

感谢@Edman 添加一些方向。

关于http - 使用 JSON 数组的 Flutter POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50736752/

相关文章:

flutter - 如何在 dart/flutter 模块中仅导入特定的方法或类

intellij-idea - 设置VM标志失败

Facebook 图形 API 响应大小限制(错误代码 1)

http - HTTP Location header 中的完全限定 url。为什么它很重要?

android - 如何在flutter中将列表对象发布到cloud firestore firebase

file - 无法在 flutter 中加载资源

firebase - Future Builder不显示Cloud Firestore中的数据

firebase - 使用 flutter 在 Firestore 中创建链接到用户 ID 的集合

node.js - 如何使用 Express API 发送 10x 响应?

javascript - 处理 http 服务器崩溃