Jak odczytać dane HttpRequest wysłane przez metodę POST z klienta, na serwerze, w Dart?Jak odczytać dane HttpRequest wysłane z klienta, na serwerze
wysłać wiadomość od klienta tak:
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);
Na serwerze jestem połowu żądania tak:
HttpServer.bind('127.0.0.1', 8081).then((server) {
server.listen((HttpRequest request) {
//DATA SHOULD BE READ HERE
});
});
Ale nie mogę dowiedzieć się, jak właściwie odczytać danych. .. Nie ma właściwości danych w HttpRequest ani nic innego ...
EDYCJA Oto, jak mogę uzyskać odpowiedź:
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);
});
}
});
});
Ale z jakiegoś powodu nie jest request.method „POST” ale „Opcje”, a jeśli zmieni się if(request.method == "OPTIONS")
, a następnie wydrukować (postData) będzie nadal nic nie powrócić ...
dziękuję za pomoc, ale to nie działa. zaktualizowałem swój pierwotny wpis informacją ... – deloki
Zaktualizowałem również mój kod. Nagłówek opcji to klient (przeglądarka internetowa), który pyta serwer, jaką funkcjonalność obsługuje. W tym (zakładam, że jest to przypadek testowy), możesz go odrzucić, ponieważ wtedy sam wyśle żądanie POST.Niestety wcześniej zapomniałem zamknąć strumień, aby nie nastąpiło. Więcej informacji na temat typów żądań HTTP można znaleźć tutaj: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html –
Nie używam metody close() w HttpRequest – deloki