HttpServletResponse#sendError如何更改ContentType [英] HttpServletResponse#sendError How to change ContentType
问题描述
我现在正在创建一个简单的Servlet来回答表单提交.该Servlet接收POST请求,并应响应Application/JSON数据.这运作良好.
现在,我想向我的servlet添加错误管理:如果servlet接收到错误的请求参数,我希望它通过简单的{"error":"ERROR MESSAGE"}
JSON响应为客户端回答400 —错误的请求"响应.
I'm now creating a simple Servlet to answer a form submition. This servlet receive POST request and should response Application/JSON datas. This is working well.
I want now to add errors managment to my servlet: If the servlet receive bad request parameters, I want it to answer the client a 400 — "Bad Request" response with a simple {"error":"ERROR MESSAGE"}
JSON response.
我正在使用HttpServletResponse#sendError(int,String)
正确发送错误,但是响应的ContentType
始终设置为text/html
,即使我以前使用过HttpServletResponse#setContentType("application/json")
.
I'm using the HttpServletResponse#sendError(int,String)
to correctly send the error but the ContentType
of the response is always set to text/html
, even though I used HttpServletResponse#setContentType("application/json")
before.
这是使用Servets发送错误的好方法吗?如何将响应的ContentType
强制为application/json
?
Is this the good way to send error using Servets ? How can I force the ContentType
of the response to application/json
?
我的测试Servlet的doPost()方法的示例代码:
EDIT : Sample code of the doPost() method of my test Servlet :
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("{\"error\":1}");
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
}