如何读取通过POST方法从Dart服务器上的客户端发送的HttpRequest数据?如何读取客户端发送的HttpRequest数据,服务器上
我从客户端发送类似这样的消息:
HttpRequest request = new HttpRequest();
var url = "http://127.0.0.1:8081";
request.open("POST", url, async: false);
String data = 'hello from client';
request.send(data);
在服务器我正在追赶的要求是这样的:
HttpServer.bind('127.0.0.1', 8081).then((server) {
server.listen((HttpRequest request) {
//DATA SHOULD BE READ HERE
});
});
但我无法弄清楚如何实际读取数据。 ..在HttpRequest中没有数据属性也没有其他的东西...
编辑这是我现在如何得到答案:
HttpServer.bind('127.0.0.1', 8081).then((server) {
server.listen((HttpRequest request) {
//DATA SHOULD BE READ HERE
print("got it");
print(request.method);
if(request.method == "POST") {
print("got it 2");
List<int> dataBody = new List<int>();
request.listen(dataBody.addAll, onDone:() {
var postData = new String.fromCharCodes(dataBody);
print(postData);
});
}
});
});
但由于某些原因将request.method不是“POST”,而是“OPTIONS”,如果我改变if(request.method == "OPTIONS")
,然后打印(POSTDATA)仍然会返回什么...
感谢你的帮助,但是这根本就不工作,有用的例子。我更新了我原来的信息... – deloki 2013-04-08 18:09:47
我也更新了我的代码。 Options标题是客户端(Web浏览器)向服务器询问它支持的功能。在这里(我假设测试用例)可以丢弃它,因为它会自己发送POST请求。不幸的是,我以前忘记关闭流,以免发生。 关于HTTP请求类型的更多细节可以在这里找到:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html – 2013-04-08 18:33:08
我没有在HttpRequest的close()方法 – deloki 2013-04-08 19:11:25