我尝试为我的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();
}
}
依赖列表:
我已经搜索过了一些话题说我需要在ResourceConfig上注册JacksonJsonProvider,但我怎样才能在AEM中进行注册?我目前的解决方法是将JSON作为String发送,并在我的方法中使用com.fasterxml.jackson.databind.ObjectMapper
将其映射到POJO。
不支持的媒体类型是当可用的“@Produces”类型列表与请求的“accept”标题中提供的任何值不匹配时JAX-RS提供的响应。
您需要在客户端请求中添加http接受标头。 accept标头必须在可接受的响应类型列表中包含“application / json”。
例如,使用curl必须在curl命令中添加-H“Accept:application / json”以添加accept标头。如果您的客户端可以接受多种响应类型,则accept标头可以是逗号分隔的值列表。