JAVA:我无法将响应(json)从服务器发送回客户端

bpm2021

我有一个客户端应用程序,它将 POST 请求(json)发送到自定义服务器。服务器必须向传入消息发送响应(json),但我没有在客户端检测到任何响应。

问题不在客户端,因为如果它向另一台服务器发送请求,几秒钟后它会收到响应,我在日志中看到它。

服务器代码

        try{
            server = new ServerSocket(4321);
            client = server.accept();
            PrintWriter out = new PrintWriter(client.getOutputStream(), true);
            System.out.println("Connection received from " + client.getInetAddress());
            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
            String s = "SERVER: Started.";

            Gson gson = new Gson();
            String json = gson.toJson(jsonObject.toString());
            while ((s = in.readLine()) != null) {
              System.out.println("RECV: "+s);
              ss = s.split("PUSH\\s");

              out.println("HTTP/1.1 200 OK");
              out.println("application/json;charset=UTF-8");
              out.println("application/json;charset=UTF-8");
              out.println("Jersey/2.27 (HttpUrlConnection 1.8.0_291)");
              out.println("no-cache");
              out.println("no-cache");
              out.println("hostname:4321");
              out.println("keep-alive");
              out.println("392");
              out.println("\n");
              out.println(json);
            } catch(Exception e) {e.printStackTrace();}

我认为我的问题的根源是 out.println()。我不知道服务器应该向客户端发送什么。响应必须包含 json!

另外,我没有客户端代码。

你能帮忙吗?

恶棍

虽然我绝对不建议以这种方式编写 HTTP 服务器,但您的代码中至少存在两个问题:

  1. 您缺少标题名称,例如application/json;charset=UTF-8应该阅读Content-Type: application/json;charset=UTF-8
  2. out.println()使用由系统属性定义的行分隔符字符串line.separator(例如\n对于 Linux)。另一方面\r\nHTTP 需要,所以最好这样写:out.print("HTTP/1.1 200 OK\r\n");

尝试这个:

out.print("HTTP/1.1 200 OK" + "\r\n");
out.print("Content-Type: application/json" + "\r\n");
// you shouldn't need the other headers…
out.print("\r\n");
out.print(json);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java-TCP / IP-服务器无法将消息发送回客户端?

Java将数据从服务器发送回客户端

(Socket.SendTo)如何响应/将数据发送回服务器开始接收的客户端?C#

服务器关闭连接后如何将数据发送回客户端?

使用POST请求将数据从Node服务器发送回React客户端

Java无法获得客户端或服务器响应

为什么我的Go服务器无法正确解码从客户端发送的JSON?

从我们的服务器向客户端发送HTTP响应

为什么我的服务器无法响应Web浏览器对客户端的请求?

客户端无法获取服务器响应

移动客户端将控制/发送命令到我的 PC 服务器客户端

Java套接字接收文件,然后将响应发送回客户端

我可以将消息故障从路由服务发送回WCF客户端吗?

socket.io-无法将数据从服务器发送到特定客户端

使用Signalr和Java客户端将json对象发送到.net服务器

将Json从android客户端发布到服务器并获得响应

从vaadin客户端向外部服务器发出请求,并将JSON响应返回给我的服务器

WebSocket服务器(Java)无法读取,但发送到C#(Unity)客户端

无法在python客户端中解密Java服务器发送的Blob

我如何将Java对象从服务器端传递到客户端

Java Netty客户端无法将消息发送到服务器,但是可以通过telnet切断服务器

无法将客户端服务器与Websockets连接

服务器如何使用Java将消息发送到客户端

将文件作为块从Java客户端发送到服务器

将图像从Java客户端发送到python服务器

Java套接字-将数据从客户端发送到服务器

将文件从Python服务器发送到Java客户端

Java客户端将音频发送到UDP服务器

每秒将数据从移动客户端发送到Java服务器