我想了解对浏览器的响应是如何工作的。作为一个例子,泽西说,它以一个由注释@Produces定义的最可接受的媒体类型响应请求:
@GET
@Produces({"application/xml", "application/json"})
public String doGetAsXmlOrJson() {
...
}
在上面的例子中,最可接受的类型是“application / xml”。嗯...对于这种媒体类型,我会在Servlet中做:
response.setContentType("application/xml");
PrintWriter out = response.getWriter();
out.println("<root><x>1</x></root>");
重点是:我需要根据媒体类型格式化响应,正如我在上一行中所做的那样。
我想知道如何使用HttpServletResponse格式化第二种可接受的类型,假设浏览器不支持“application / xml”。在这种情况下,应选择“application / json”。
答案 0 :(得分:2)
除非它告诉您,否则您无法知道客户端支持的媒体类型。这通常使用Accept
header。
Accept request-header字段可用于指定某些媒体 响应可接受的类型。
所以如果客户发送
Accept: application/xml
您应该尝试生成application/xml
格式化的响应。
String mediaType = request.getHeader("Accept"); // can return null
如果您无法提供此类回复,则应使用适当的正文回复406 Not Acceptable
状态代码。