我尝试为我的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。
答案 0 :(得分:0)
不支持的媒体类型是JAX-RS在可用的" @ Produces"列表中提供的响应。类型与"接受"中提供的任何值都不匹配。请求的标题。
您需要在客户端请求中添加http接受标头。 accept标头必须包含" application / json"在可接受的响应类型列表中。
例如,使用curl必须添加-H" Accept:application / json" to curl命令添加accept标头。如果您的客户端可以接受多种响应类型,则accept头可以是逗号分隔的值列表。