我使用POST请求从客户端发送一些数据
var value = new Map<String, String>();
value["param1"] = 'value1';
value["param2"] = 'value2';
value["param3"] = 'value3';
HttpRequest.postFormData('http://localhost:8080/', value);
并尝试在服务器端获取此数据:
HttpServer.bind(InternetAddress.ANY_IP_V6, 8080).then((server) {
server.listen((HttpRequest request) {
//TODO: process POST request
});
});
但是如何从请求中获取POST值作为Map&lt; string,string&gt;?
更新1
但是当我看到
的结果时var jsonString = await request.transform(UTF8.decoder).join();
取决于发布消息的类型。如果我改变它,结果将是
的multipart / form-data的
------WebKitFormBoundaryoQQD7N0iA5zS8qmg
Content-Disposition: form-data; name="param1"
value 1
------WebKitFormBoundaryoQQD7N0iA5zS8qmg
Content-Disposition: form-data; name="param2"
value 2
------WebKitFormBoundaryoQQD7N0iA5zS8qmg
Content-Disposition: form-data; name="param3"
value 3
------WebKitFormBoundaryoQQD7N0iA5zS8qmg--
文字/纯
param1=value 1
param2=value 2
param3=value 3
应用程序/ x-WWW窗体-urlencoded
param1=value+1¶m2=value+2¶m3=value+3
我已经问过如何将其转换为Map&lt; string,string&gt;?
答案 0 :(得分:0)
这是一个完整的教程https://www.dartlang.org/docs/tutorials/httpserver/#handling-post
String jsonString = await request.transform(UTF8.decoder).join();
或
Map result = await request.transform(UTF8.decoder).join().then(JSON.decode);
答案 1 :(得分:0)
我有同样的问题,直到现在我都没有找到任何解决方案。我需要从客户端到服务器传递一个映射,并且服务器要使用该映射来查询mongodb数据库。客户端发送该映射,但是服务器接收一个字符串。对json的任何转换也会返回字符串,而不是映射。 在客户端,我发送了一个名为query的地图:
await HttpRequest.postFormData('http://localhost:8085/$_coll',query).then((HttpRequest response)
在服务器端:
if (request.method == 'POST') {
query = await request.transform(utf8.decoder).join();
}
我尝试将json编码/解码,但是没有成功。