繁体   English   中英

415不支持的媒体类型-不适用于GET

[英]415 Unsupported Media Type - Does not work for GET

我有一个休息电话,它返回会话用户的名称

@GET
    @Produces(" text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    @Path(value = "getSessionUserName")
    public Response getSessionUserName() {

        try {

            Session session = SessionManager.getCurrentSession();
            String details = session.getUserDisplayName().toString();
            return Response.ok(details).build();
        } 
        catch(Exception e) {
            return handleExceptions(e);
        }

每次尝试访问此文件时,都会收到415不支持的媒体类型异常。 我还有其他电话,它们几乎相同,并且工作正常。 我无法弄清楚这个问题。

@Produces允许使用单个String媒体类型(而不是带有多个逗号分隔的媒体类型的单个字符串)或单个字符串媒体类型的逗号分隔列表

@Produces("application/xml")

-or-

@Produces({"text/html","application/xhtml+xml","application/xml;q=0.9", "*/*;q=0.8"})

另一件事,您可能需要阅读有关内容协商的Wikipedia文章。 我认为您可能不完全了解它的工作原理。 您生产的产品就是浏览器将发送的内容。 就是说,它希望以HTML,XHTML格式返回数据,或者如果这些数据不可用,则返回XML,如果数据不可用,则给我任何东西。

但是在服务器端,您需要确定实际能够产生哪些类型。 您是否可以实际生成HTML,您可以实际生成XHTML,您是否可以实际生成XML? @Produces批注可与内容协商配合使用。 有“广告”您能够产生什么媒体类型。 客户端应发送一个具有其能够处理的媒体类型的Accept标头。 那就是谈判发生的地方。 如果客户端需要一种类型,则服务器将无法生成该类型,它将收到406 Not Acceptable错误。 这就是ConNeg的工作方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM