发生JAXBException:从Postman客户端调用Rest Service时出现意外元素

时间:2015-09-16 07:03:48

标签: java json spring rest cxf

我有一个使用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

但它仍然不起作用。有什么指针吗?

1 个答案:

答案 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