ObjectOutputStream:在字符串开头附加问号
ObjectOutputStream: appending question marks at the beginning of the String
Server(Java) 向客户端 (TypeScript) 发送一个 Json 字符串。在客户端我得到以下信息:
因此 JSON.parse()
由于附加了问号而失败。
我试过了:
- 正在将内容类型设置为 - "text/html"
- 将编码设置为 - "UTF-8"
似乎没有什么可以删除这些。
我的代码:
public class objectOutput {
static int i=0;
ObjectOutputStream objectOutputStream;
public objectOutput(HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream");
objectOutputStream = new ObjectOutputStream(response.getOutputStream());
}
// Using this method to write a Json String
public void writeObject(Object object) throws IOException {
objectOutputStream.writeObject(object);
objectOutputStream.close();
objectOutputStream.flush();
}
}
基本上,如果您只是想发送文本,则不应使用 ObjectOutputStream
。这不是它的目的。 ObjectOutputStream
以 Java 特定格式对任意可序列化对象执行二进制序列化。应该只在代码读取数据也是Java时使用,使用ObjectInputStream
.
在这种情况下,您可能应该只调用 response.getWriter()
,或者自己在 response.getOutputStream()
周围创建一个 OutputStreamWriter
。 (这里通常首选使用 getWriter()
- 该调用的全部意义在于为文本响应创建编写器。)
内容类型与此问题无关,但 you should probably change that to application/json
。
能否尝试使用 json 格式,如下所示:
public class objectOutput {
static int i=0;
PrintWriter pw;
public objectOutput(HttpServletResponse response) throws IOException {
response.setContentType("application/json");
pw = response.getWriter();
}
// Using this method to write a Json String
public void writeObject(Object object) throws IOException {
pw.print(object);
pw.flush();
pw.close();
}
}
Server(Java) 向客户端 (TypeScript) 发送一个 Json 字符串。在客户端我得到以下信息:
因此 JSON.parse()
由于附加了问号而失败。
我试过了:
- 正在将内容类型设置为 - "text/html"
- 将编码设置为 - "UTF-8"
似乎没有什么可以删除这些。
我的代码:
public class objectOutput {
static int i=0;
ObjectOutputStream objectOutputStream;
public objectOutput(HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream");
objectOutputStream = new ObjectOutputStream(response.getOutputStream());
}
// Using this method to write a Json String
public void writeObject(Object object) throws IOException {
objectOutputStream.writeObject(object);
objectOutputStream.close();
objectOutputStream.flush();
}
}
基本上,如果您只是想发送文本,则不应使用 ObjectOutputStream
。这不是它的目的。 ObjectOutputStream
以 Java 特定格式对任意可序列化对象执行二进制序列化。应该只在代码读取数据也是Java时使用,使用ObjectInputStream
.
在这种情况下,您可能应该只调用 response.getWriter()
,或者自己在 response.getOutputStream()
周围创建一个 OutputStreamWriter
。 (这里通常首选使用 getWriter()
- 该调用的全部意义在于为文本响应创建编写器。)
内容类型与此问题无关,但 you should probably change that to application/json
。
能否尝试使用 json 格式,如下所示:
public class objectOutput {
static int i=0;
PrintWriter pw;
public objectOutput(HttpServletResponse response) throws IOException {
response.setContentType("application/json");
pw = response.getWriter();
}
// Using this method to write a Json String
public void writeObject(Object object) throws IOException {
pw.print(object);
pw.flush();
pw.close();
}
}