我想通过套接字流发送 json,但在关闭连接时我经常遇到此错误,我不知道为什么。 我试图关闭 JsonWriter,但收到 IOException,即使我从未使用过 JsonWritter。 这是有问题的例外情况:
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Incomplete document
at Main.close(Main.java:34)
at Main.socketTest(Main.java:23)
at Main.main(Main.java:12)
Caused by: java.io.IOException: Incomplete document
at com.google.gson.stream.JsonWriter.close(JsonWriter.java:610)
at Main.close(Main.java:31)
... 2 more
这是服务器套接字的代码:
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.socketTest();
}
Socket socket;
JsonWriter jsonWriter;
public void socketTest() {
try (ServerSocket serverSocket = new ServerSocket(3030)){
Socket socket = serverSocket.accept();
this.socket = socket;
jsonWriter = new JsonWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));
jsonWriter.close();
socket.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
客户端代码非常基本,它只是与服务器建立连接:
public class ClientTest {
public static void main(String[] args) {
ClientTest clientTest = new ClientTest();
clientTest.connect();
}
public void connect() {
try {
Socket socket = new Socket("localhost", 3030);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
我希望任何人都可以帮助我,因为我已经为这个问题苦苦挣扎了好几天。
com.google.gson.stream.JsonWriter
类来说不是有效的 JSON 文档:
要将数据编码为 JSON,请创建一个新的
。每个 JSON 文档必须包含一个顶级数组或对象。JsonWriter
因此您必须编写一个数组或对象,否则您会收到“文档不完整”错误消息,如close()
投掷:
- 如果 JSON 文档不完整。IOException