当前位置: 首页 > 知识库问答 >
问题:

如何使用JAX-RS和Jersey在Adobe AEM 6.2中发布json数据

澹台承载
2023-03-14

我尝试为我的AEM应用程序创建JSON API。当我将数据作为JSON发布到服务时,它总是抛出415个错误:不支持的媒体类型。以下是我所做的:

JSON数据

{ "fullName" : "myname"}

Java POJO类

public class FormDataBean {
    private String fullName;

    public String getFullName() {
        return fullName;

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }
}

服务类别

@Component(metatype = false)
@Service({JsonAPI.class})
@Path("/postdata")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public class JsonAPI
{
    @POST
    @Path("/form")
    public String getFormData(FormDataBean jsonData)
    {
        return formData.getFullName();
    }
}

依赖项列表:

  • jackson-annotations-2.8.6。罐子
  • jackson-core-2.8.6。罐子
  • jackson-databind-2.8.6。罐子
  • jackson-jaxrs-base-2.8.6。罐子
  • jackson-jaxrs-json-provider-2.8.6。罐子
  • jackson-module-jaxb-annotations-2.8.6。罐子
  • jersey-all-2.22.2。罐子
  • publisher-5.3.1。震击器

我搜索了一下,有些话题说我需要用ResourceConfig注册JacksonJsonProvider,但是我如何在AEM中做到这一点?我目前的解决方法是将JSON作为字符串发送并使用com.fasterxml.jackson.databind.ObjectMapper将其映射到POJO在我的方法中。

共有1个答案

锺星洲
2023-03-14

不支持的媒体类型是JAX-RS在可用“@products”类型列表与请求的“accept”标头中提供的任何值不匹配时提供的响应。

您将需要向客户端请求添加一个超文本传输协议接受标头。接受标头必须在可接受的响应类型列表中包含“应用程序/json”。

例如,使用curl必须在curl命令中添加-H“接受:应用程序/json”以添加接受标头。如果您的客户端可以接受多种响应类型,那么接受标头可以是逗号分隔的值列表。

 类似资料:
  • 我正在开发一个java脚本客户端应用程序,在服务器端我需要处理CORS,所有我用JAX-RS和Jersey编写的服务。我的代码: 感谢佛普尼

  • 问题内容: 我正在开发一个Java脚本客户端应用程序,在服务器端我需要处理CORS,以及我用JERSEY用JAX-RS编写的所有服务。我的代码: 到目前为止,我收到错误消息在请求的资源上没有标头。因此,不允许访问源’ http:// localhost:8080 ‘。” 问题答案: 注意:请务必阅读底部的UPDATE @CrossOriginResourceSharing 是CXF批注,因此不适用

  • 问题内容: 我正在使用JAX-RS的Jersey实现。我想将JSON对象发布到该服务,但收到错误代码415不支持的媒体类型。我想念什么? 这是我的代码: 这是Order对象: 这样的GET请求可以完美地工作,并以JSON格式返回订单: 但是,像这样的POST请求返回415: 问题答案: 答案非常简单。我必须在请求中添加标头,其值为。没有此标头,Jersey不知道如何处理请求正文(尽管有注释)!

  • 经过谷歌搜索,有人说可能是webshpere服务器已经包含了ASM。因此,我从app.war web-INF/lib中删除了asm.jar。但它仍然存在错误。

  • 我们可以通过 实现创建JAX-RS示例。 为此,需要加载 jersey相关jar文件或使用Maven框架。 在这个例子中,我们使用jersey jar文件来实现JAX-RS jersey示例。 Jersey Jar文件下载网址:https://jersey.github.io/download.html 打开Eclipse,创建一个Web工程: restfuljersey,如下图所示 - JAX-