我尝试为我的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.jar
- 杰克逊核2.8.6.jar
- Jackson-Databind-2.8.6.jar
- Jackson-Jaxrs-Base-2.8.6.jar
- Jackson-Jaxrs-Json-Provider-2.8.6.jar
- Jackson-Module-Jaxb-Annotations-2.8.6.jar
- Jersey-All-2.22.2.2.2.jar
- Publisher-5.3.1.Jar
我已经搜索了,有人说我需要在ResourceConfig中注册Jacksonjsonprovider,但是我该如何在AEM中进行?我目前的解决方法是将JSON发送为字符串,并使用我的方法中的com.fasterxml.jackson.databind.ObjectMapper
将其映射到POJO。
不支持的媒体类型是响应jax-rs提供的可用" @produces"类型的列表与请求的"接受"标头中提供的任何值匹配。
您需要将HTTP Accept标头添加到客户端请求中。ACCEPT标题必须在可接受的响应类型列表中包含"应用程序/JSON"。
例如,使用卷发必须将-h添加-h" accept:application/json"到curl命令中添加接受标头。如果您的客户可以接受多种响应类型,则接受标头可以是逗号分隔的值列表。