Come leggo i dati HttpRequest inviati dal metodo POST dal client, sul server, in Dart?Come leggere i dati HttpRequest inviati dal client, sul server
mando un messaggio dal client in questo modo:
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);
Sul server di Io sono recuperando la richiesta in questo modo:
HttpServer.bind('127.0.0.1', 8081).then((server) {
server.listen((HttpRequest request) {
//DATA SHOULD BE READ HERE
});
});
Ma Non riesco a capire come leggere effettivamente i dati. .. Non c'è la proprietà dei dati in HttpRequest né altro ...
EDIT Ecco come ottengo la risposta ora:
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);
});
}
});
});
Ma per qualche motivo il request.method non è "POST", ma "OPZIONI", e se cambio a if(request.method == "OPTIONS")
, quindi stampare (postData) restituirà ancora niente ...
grazie per il vostro aiuto, ma questo non ha funzionato. Ho aggiornato il mio post originale con le informazioni ... – deloki
Ho anche aggiornato il mio codice. L'intestazione Options è il client (browser Web) che chiede al server quali funzionalità supporta. In questo (presumo il caso di test) puoi scartarlo, in quanto invierà la richiesta POST stessa.Sfortunatamente avevo dimenticato in precedenza di chiudere lo stream in modo che non si verificasse. Ulteriori dettagli sui tipi di richieste HTTP possono essere trovati qui: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html –
non ho un metodo close() in HttpRequest – deloki