首页 文章

有没有办法在 dart 中从服务器向客户端发送数据

提问于
浏览
1

我正在使用 postgrelsql 进行客户端服务器 application(through 浏览器)。我创建了服务器,它在一个端口上运行。如何从服务器获取数据到客户端。客户端:

req=new HttpRequest();
   req.open('get', 'http://127.0.0.1:8082/');
   var rr=req.send();
   print(rr);

服务器端:

HttpServer server = await HttpServer.bind('127.0.0.1', 8082);

      await for (HttpRequest request in server) {
      request.response.headers.add("Access-Control-Allow-Origin", "*");
      request.response.headers.add("Access-Control-Allow-Methods",      "POST,GET,DELETE,PUT,OPTIONS");
      request.response.write(await consoledatabaseconnection.someList());
      handleRequest(request);
      request.response.close();
    }
   void handleRequest(HttpRequest request) {
  try {
    if (request.method == 'GET') {
      print('request get');

      request.response.write('data form server');

    } else {
      print('request others');
    }
  } catch (e) {
    print('Exception in handleRequest: $e');
  }
  print('Request handled.');
}

在服务器端如何返回数据。

1 回答

  • 1

    服务器端代码

    main(List<String> arguments) async {
      HttpServer.bind('localhost', 8085).then((server) {
        server.listen((HttpRequest request) {
          request.response.headers.add("Access-Control-Allow-Origin", "*");
          request.response.headers
              .add("Access-Control-Allow-Methods", "POST,GET,DELETE,PUT,OPTIONS");
          request.response.headers.add('Access-Control-Allow-Headers',
              'Origin, X-Requested-With, Content-Type, Accept,application/x-www-form-urlencoded');
    
          if (request.method == "POST") {
            List<int> dataBody = new List<int>();
            request.listen(dataBody.addAll, onDone: () async {
              query_dy = new String.fromCharCodes(dataBody);
              request.response.write(await databaseconnection('your response code here'));
              request.response.close();
            });
          }
        });
      });
    }
    

    客户端代码 req = new HttpRequest();

    req.open('post', 'http://localhost:8085');
    
    req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    
    req.send('{"username": "$username","password": "$password"}');
    
    req.onReadyStateChange.listen((_) {
      if (req.readyState == HttpRequest.DONE &&
          (req.status == 200 || req.status == 0)) {
            //you can get response form server here
        String responsefrmserver = req.responseText;
    
        } 
      }
    });
    

相关问题