【发布时间】:2021-04-14 15:01:41
【问题描述】:
我正在构建一个必须处理 http 请求的 java 服务器。我正在尝试处理一个 GET 请求,它部分工作正常。在我想在这里讨论的具体情况下,我想用 Json 来回应。这就是我正在做的:
private Socket socket;
OutputStream outputStream = socket.getOutputStream();
String json = gson.toJson(conversazione);
String response =
"HTTP/1.1 200 OK" + CRLF +
"Content-Length: " + (json.getBytes().length)+ CRLF +
"Content-Type: application/json;charset=UTF-8" + CRLF +
"Server: Federico's Java Server" + CRLF +
"Date: " + new Date() + CRLF + CRLF +
json + CRLF + CRLF;
outputStream.write(response.getBytes());
它有效,我的意思是客户端收到状态 200 OK,但它收到的是文本而不是 Json。我正在向 Postman 提出请求,这是它收到的响应:
【问题讨论】:
-
...但这就是您在回复中写出的内容。如果你只想写出 JSON,就只写出 JSON。
-
@Makoto 这个叫做json的字符串其实是一个json。但我认为你的意思是别的,所以请你再解释一下吗?
-
你说的是正确的@Makoto,所以你研究 Frid Ric 的关键是你如何发送与响应正文分开的响应标头,目前它只是文本输出回应
-
@Chris 以哪种方式分离,分离是什么意思?我什至无法想象这种分离,所以我无法想出解决方案
-
也最好致电
.getBytes(StandardCharsets.UT8)。你确定 CRLF ="\r\n"?它看起来是倒置的。