Wie lese ich HttpRequest Daten von POST-Methode vom Client, auf dem Server, in Dart gesendet?Wie HttpRequest Daten vom Client gesendet werden, auf Server
ich eine Nachricht von dem Client wie folgt senden:
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);
Auf Server ich die Anfrage wie folgt bin Fang:
HttpServer.bind('127.0.0.1', 8081).then((server) {
server.listen((HttpRequest request) {
//DATA SHOULD BE READ HERE
});
});
Aber ich kann nicht herausfinden, wie man tatsächlich die Daten zu lesen. .. Es gibt keine Daten Eigentum in Httprequest noch etwas anderes ...
EDIT Dies ist, wie ich die Antwort bekommen:
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);
});
}
});
});
Aber aus irgendeinem Grunde die request.method nicht „POST“, sondern „OPTIONEN“ ist, und wenn ich zu if(request.method == "OPTIONS")
ändern, dann drucken (postdata) noch nichts zurückgeben ...
danken Ihnen für Ihre Hilfe, aber das hat nicht funktioniert. Ich habe meinen ursprünglichen Post mit der Info aktualisiert ... – deloki
Ich habe auch meinen Code aktualisiert. Der Options-Header ist der Client (Web-Browser), der den Server fragt, welche Funktionalität er unterstützt. In diesem Fall (ich nehme einen Testfall an) können Sie es verwerfen, da es dann die POST-Anfrage selbst sendet.Leider hatte ich vorher vergessen den Stream zu schließen, so dass es nicht dazu kam. Weitere Details zu HTTP-Anfrage-Typen finden Sie hier: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html –
Ich habe nicht eine close() -Methode in HttpRequest – deloki