我正在尝试使用 Sockets 在 Java 中创建一个服务器。我使用
ServerSocket serverSocket = new ServerSocket(port);
创建一个 ServerSocket,然后尝试使用 Socket clientSocket = serverSocket.accept();
进行连接。我通过 Postman 发送请求。
我的问题是,每当我发送请求时,我都会得到输出:
New client connected
input: null
closed!
New client connected
input: PUT / HTTP/1.1
closed!
我很困惑为什么客户端连接两次,以及为什么第一个请求总是空。
完整代码:
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("New client connected");
BufferedReader br = new BufferedReader(new InputStreamReader((clientSocket.getInputStream())));
String input = br.readLine();
System.out.println("input: " + input);
clientSocket.close();
System.out.println("closed!");
}
复制评论:
这对于 Postman 和 Socket 连接来说是正常的 - 在使用 Postman 作为 ServerSocket 时也有同样的问题(我基本上只是为其做了一些虚拟逻辑,如果 body 为 null,这意味着 postman 的第一个连接返回空响应)。如果你不想要这种行为,只需使用curl或其他东西
您要么必须添加逻辑来处理 Postman 建立的奇怪的虚拟连接,要么使用更好的工具来完成这项工作 - 比如curl。