我有一个使用Spring和CXF编写的休息服务。方法如下所示。
@POST
@Path("/detail")
public StudentResponse getStudentDetails(Student student);
学生班。
@XmlRootElement(name="Student")
public class Student implements Serializable{
...
我可以使用cxf客户端调用该服务
WebClient client = WebClient.create("http://localhost:8180/oauthserver/service/student/detail");
client.type("application/json").accept("application/json");
Response response =client.post(s);
StudentResponse sr = response.readEntity(StudentResponse.class);
我发布的数据(使用jackson生成json条目)
{
"name" : "input",
"id" : 1,
"marks" : 20.2
}
但是当我从PostMan调用SoapUI的服务时,我收到以下错误。
JAXBException occurred : unexpected element (uri:"", local:"name").
Expected elements are <{}Student>.
unexpected element (uri:"", local:"name"). Expected elements are <{}Student>.
我正在调用POST方法和上下文类型RAW.I已将标头值设置为:
Content-Type : application/json
Accept : application/json
但它仍然不起作用。有什么指针吗?
答案 0 :(得分:1)
只为面临同一问题的任何人发布此内容。
我必须将jackson提供商添加到服务列表
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
</jaxrs:providers>
然后需要添加maven依赖项(较新版本将具有不同的包依赖)
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
此页面有解决方案...... http://cxf.apache.org/docs/jax-rs-data-bindings.html