【问题标题】:dart, how do you read the content body of a http request?飞镖,你如何阅读http请求的内容主体?
【发布时间】:2021-07-20 15:46:20
【问题描述】:

我正在使用 dart http 服务器,我不确定如何读取 http 请求中发送的实际内容:“{'text':'some text data.'}”

import 'dart:io';


void main() {

  HttpServer.bind('127.0.0.1', 3000).then((server){
    server.listen((HttpRequest request) {
      print("request made");
      request.response.write('''
        <html>
          <head>
          </head>
          <body>
            <pre>
              HELLO:
              request info:
                method: ${request.method}
                uri: ${request.uri}
                content length: ${request.contentLength}
                content : //HOW DO I GET THIS?
            </pre>
            <script>

              var req = new XMLHttpRequest();
              req.open("POST","/a_demonstration");
              req.send("{'text':'some text data.'}");

            </script>
          </body>
        </html>
      ''');
      request.response.close();
    });
  });

}

【问题讨论】:

  • 我不明白你的问题。您想知道如何在收到该响应的客户端上阅读吗?您只是想知道如何阅读或如何处理内容?
  • 没有在服务器上我如何获取我发回的 json 字符串,我更新了代码示例,我想读取从服务器上的客户端发回的实际数据并将其合并到服务器发回的响应,所以 pre 标签的最后一行应该在服务器的第二个响应中读取content: {'text':'some text data'},我知道它实际上并没有显示在屏幕上我只是在开发工具网络选项卡中查看它跨度>
  • 我想这是我的错,因为 Alexandre 理解你的问题没有问题。

标签: xmlhttprequest dart


【解决方案1】:

你可以使用:

import 'dart:convert' show utf8;

Future<String> content = utf8.decodeStream(request);

【讨论】:

    【解决方案2】:

    Alexandre Ardhuin 给出了简短而正确的答案,供任何想查看完整代码的人使用:

    import 'dart:io';
    import 'dart:convert' show UTF8;
    
    void main() {
    
      HttpServer.bind('127.0.0.1', 3000).then((server){
        server.listen((HttpRequest request) {
          print("request made");
          if(request.contentLength == -1){
            _sendResponse(request, '');
          }else{
            UTF8.decodeStream(request).then((data)=>_sendResponse(request,data));
          }
        });
      });
    
    }
    
    _sendResponse(HttpRequest request, String requestData){
      request.response.write('''
          <html>
          <head>
          </head>
          <body>
          <pre>
          HELLO:
          request info:
          method: ${request.method}
          uri: ${request.uri}
          content length: ${request.contentLength}
          content: ${requestData}
          </pre>
          <script>
    
          var req = new XMLHttpRequest();
          req.open("POST","/a_demonstration");
          req.send("{'text':'some text data.'}");
    
          </script>
          </body>
          </html>
      ''');
      request.response.close();
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多