我正在构建一个必须处理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());
它可以工作,我的意思是客户端接收状态200ok,但是它接收的是文本而不是json。我正在和 Postman 做一个请求,这是它收到的回复:
2条答案
按热度按时间ru9i0ody1#
我认为您的问题是,您将http头和正文一起发送,它们需要分开。
a在快速搜索后发现了这篇文章。根据该文章中的代码示例(稍微调整以使用示例中的值):
我想去看看那篇文章。我上面的示例是手工编写的,我的工作不符合预期。
dffbzjpn2#
您确定crlf=“\r\n”?它看起来倒了。
“\n\r”可能被解释为两行(unix+macos),因此http头在第一行之后结束。
另外,最好调用.getbytes(standardcharsets.ut8)。