当前位置: 首页 > 知识库问答 >
问题:

后端的Flutter请求正在打印编码符号

汝臻
2023-03-14

我正在使用DART的http库使用Android模拟器从Flutter发出一个本地请求。当我点击下面的一个按钮时,在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的URL:https://10.0.2.2:8000/,因为android模拟器在本地指向了这个唯一的URL。

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

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   �   
        #

同样,当我使用postman将相同的请求打到URL http://localhost:8000/时,后端服务将打印正确的请求,没有任何未知符号,如上所示。我在这条流中哪里错了。

共有1个答案

岳玉书
2023-03-14

你能用这个方法试试吗?它先解码utf8,然后再解码正文

json.decode(utf8.decode(response.bodyBytes))
 类似资料:
  • 我试图构建一个基于Java、RestAssured和Cucumber的Rest API自动化。我想通过柱子击中终点。问题是,当我将响应转换为字符串时,当我打印响应时,它打印的是XML文件内容,而不是响应。我还看到状态代码为200。我不知道这里出了什么问题。下面是我的代码库中的示例代码段。 我正在尝试使用WebService(SOAP WSDL)。 我不知道为什么我会看到这种模糊。有时打印响应,有时

  • 问题内容: 我正在使用BeautifulSoup从HTML提取一些文本,但是我只是想不出如何正确地将其打印到屏幕(或与此相关的文件)上。 这是我的包含文本的类的样子: 当尝试打印一个实例时,这是我在控制台上看到的: 无论我尝试什么,都无法获得想要的输出(上面的文本应该是希伯来语)。我的最终目标是序列化到文件(使用json或pickle)并能够将其读回。 我在Ubuntu 10.10上使用Pytho

  • 我使用Wiremock服务器模拟响应,并使用JSON格式模拟响应。 这不起作用,因为电子邮件中的“@”未编码。我需要传递“test_user@gmail”才能使请求正常工作。 这里只有一个地方有零钱。但对于其他模拟,请求正文有许多特殊字符**(@,%*\n\s)**。有没有办法在Wiremock中处理编码部分。 另外,有没有办法在url中编码字符串?

  • 问题内容: 我如何查看Jersey生成并发送到服务器的实际请求?我在处理特定请求时遇到问题,运行Web服务器的同伴要求查看完整的请求(带有标头等)。 问题答案: 如果您仅使用Jersey客户端API,则LoggingFilter(客户端过滤器)应该可以帮助您: 否则,您可以使用其他LoggingFilter(容器过滤器)再次在服务器上记录请求和响应。

  • 问题内容: 我希望能够从请求中打印JAX-RS 2 JSON有效负载,而不管我的应用程序服务器上的实际实现如何。 我已经尝试过在SO上提出建议的解决方案,但是所有解决方案都包含实际实现中的二进制文件(例如Jersey和类似文件),并且只允许在我的应用程序中使用javaee- api v 7.0。 我尝试在我的客户端上实现ClientRequestFilter和ClientResponseFilte

  • 问题内容: 我正在寻找一种在Java中编码字符串的方法,就像php的本机函数一样。 我试图使用JavaMails的MimeUtility库。但是我无法使该方法起作用,因为它采用OutputStream作为输入而不是字符串(我使用该函数转换了字符串)并输出了无法返回字符串的内容(我是Java noob :) 谁能给我提示如何编写将字符串转换为OutputStream并在编码后将结果输出为String