gpt4 book ai didi

java - 如何格式化 servlet 响应以生成 HTML 中 "accept"参数可接受的媒体类型?

转载 作者:行者123 更新时间:2023-11-30 04:12:33 31 4
gpt4 key购买 nike

我想了解浏览器的响应是如何工作的。例如,jersey 表示它会使用注释 @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”。

最佳答案

除非客户端告诉您,否则您无法知道客户端支持什么媒体类型。这通常通过 Accept header 完成。 .

The Accept request-header field can be used to specify certain media types which are acceptable for the response.

所以如果客户端发送

Accept: application/xml

您应该尝试生成 application/xml 格式的响应。

String mediaType = request.getHeader("Accept"); // can return null

如果您无法做出这样的响应,您应该使用 406 Not Acceptable 进行响应具有适当主体的状态代码。

关于java - 如何格式化 servlet 响应以生成 HTML 中 "accept"参数可接受的媒体类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273394/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com