我想创建一个应用程序,该应用程序将从servlet获取一个JSON对象以对其进行反序列化,然后使用它的变量执行其他操作。
我的servlet在doPost中有以下代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ObjectOutputStream os;
os = new ObjectOutputStream(response.getOutputStream());
String s = new String("A String");
Gson gson = new Gson();
String gsonObject= gson.toJson(s);
os.writeObject(gsonObject);
os.close();
}
现在,当servlet运行时,我可以通过浏览器访问它,如果我在doGet方法中发布相同的代码,将会下载servlet文件,这不是我想要的。
我应该在我的第二个应用程序中使用什么来连接到servlet,获取对象,以便稍后可以操作它?
提前谢谢。
发布于 2012-12-09 05:50:16
您只需在servlet中进行一些更改:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String s = new String("A String");
String json = new Gson().toJson(s);
this.response.setContentType("application/json");
this.response.setCharacterEncoding("UTF-8");
Writer writer = null;
try {
writer = this.response.getWriter();
writer.write(json);
} finally {
try {
writer.close();
}
catch (IOException ex) {
}
}
}
发布于 2012-12-09 05:02:12
如果正在下载servlet文件,而不是在浏览器中显示它,则很可能没有在响应中设置内容类型。如果要编写JSON字符串作为servlet响应,则必须使用
response.setContentType("text/html");
response.getWriter().write(json);
请注意订单,它的"text/html“而不是"html/text”
发布于 2012-12-09 06:19:55
IfI正确地理解了这个问题,然后您就可以使用、java.net.HttpURLConnection
和java.net.URL
对象创建到此servlet的连接,并在第二个servlet中读取上述JSON servlet流传输的JSON。
https://stackoverflow.com/questions/13784741
复制相似问题