Dart:在服务器端获取POST参数

时间:2015-11-23 12:04:14

标签: dart dart-io

我使用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&param2=value+2&param3=value+3

我已经问过如何将其转换为Map&lt; string,string&gt;?

2 个答案:

答案 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编码/解码,但是没有成功。