【发布时间】: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