【问题标题】:Flutter request at backend is printing encoded symbols后端的颤振请求正在打印编码符号
【发布时间】:2021-06-26 14:04:55
【问题描述】:

我正在使用 Android 模拟器使用 Dart 的 http 库从 Flutter 发出本地请求。当我点击一个按钮,下面的代码在颤振中执行,该代码用于调用在端口 8000 上本地运行的本地服务。

void getRequest () async {
    Map<String, String> body = {
      "schoolName":"abcd"
    };
    Map<String, String> headers = {
      "content-type": "application/json"
    };
    http.Response response =await http.post("https://10.0.2.2:8000/", headers: headers, body: jsonEncode(body));
  }

这是我的 localhost 网址:https://10.0.2.2:8000/ 因为 android 模拟器在本地指向这个唯一的网址。

我正在阅读此请求的代码如下:

int port;
    ServerSocket serverSocket;
    boolean running = true;
public void startServer () {
        try {
            serverSocket = new ServerSocket(port);
            this.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    @Override
    public void run() {
        while (running) {
            try {
                Socket socket = serverSocket.accept();
                if (socket.isConnected()) {
                    System.out.println("Server Starter");
                }

                InputStream inputStream = socket.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String line;
                while ((line = reader.readLine()).length() != 0) {
                    System.out.println(line);
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws UnsupportedEncodingException {
        ServerClass serverClass = new ServerClass(8000);
        serverClass.startServer();
    }

当我打印请求时,它看起来像这样,即它们都是一些编码符号:

 �  �`S>oV��!���;�nGu�k�f����l,!`3q  �+�/�,�0̨̩�    ��
� � � / 5 
  H   
  10.0.2.2   �   
        #

此外,当我使用邮递员向 URL http://localhost:8000/ 发送相同的请求时,后端服务正在打印正确的请求,没有任何上述未知符号。我在这个流程中哪里出错了?

【问题讨论】:

    标签: java flutter sockets encoding bufferedreader


    【解决方案1】:

    你可以试试这个方法,它先解码 utf8,然后解码正文

    json.decode(utf8.decode(response.bodyBytes))
    

    【讨论】:

    • 感谢您的回复,但我的问题是当我在后端打印请求时,它会以未知符号打印请求。如何摆脱这些未知符号并打印正确的请求?目前我并不担心反应。这里的重点是为什么后端的请求是一些未知符号,但是当邮递员后端命中的相同请求打印出没有任何未知符号的正确请求时。
    猜你喜欢
    • 2022-08-14
    • 2021-02-23
    • 2019-12-04
    • 2019-12-19
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多