我已经为这个错误挣扎了几个小时;我试图使一个HTTP post请求与XML在它的身体;我设法这样做:
@POST
@Path("/callback")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_XML)
public Response updateStatus(InputBean inputBean) {
//my code
}
我的XML注释是这样的:
@XmlRootElement(name = "project")
public class Project {
@XmlElement(name ="result")
private String result;
public Project() {
}
public String getResult() {
return result;
}
public void setResult (String result) {
this.result = result;
}
}
输入bean实际上比这更复杂;我在调试模式下运行了我的代码,并验证了在使用postman并发出请求后,inputbean得到了增强;但有个问题,我的bean中有一些字段命名为project-name;使用"-"字符,所有这些字段在发出请求时不会得到增强,所以我想添加一个注释:
@XmlElement(name ="project-name")
private String projectName;
当我添加该注释并运行代码时,我得到一个内部服务器错误500,无法调试代码,这些值应该是"可读的",我只需要增强这些字段,但我仍然不知道如何,所有没有"-"字符的其他字段在过程中得到增强。
xml对body的请求:
<bag>
<action>bagexecutionresult</action>
<detail>
<project name="IBankerPorting">
<component>ASA</component>
<tag>trunk//264989</tag>
<request-id>203782</request-id>
<tag-id>254753</tag-id>
<date>2010-02-03 12:16</date>
<security-needed>no</security-needed>
<type>MAINTENANCE</type>
<result-ci>-0.000</result-ci>
<result-pmd-highest>-1</result-pmd-highest>
<result-pmd-high>-1</result-pmd-high>
<result-pmd-medium>-1</result-pmd-medium>
<result-cc-open-issue>0</result-cc-open-issue>
<result>approved</result>
</project>
</detail>
</bag>
交货。每个不包含"-"的字段在我的bean中都得到了增强(由于jersey,它的值已经被XML获取),除了那些带有"-"的字段,如request-id
我最终找到了解决方案,我在包含xml字段的pojo类中添加了这个语句:@XmlAccessorType(XmlAccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "project")
public class Project {
@XmlElement(name ="result")
private String result;
public Project() {
}
public String getResult() {
return result;
}
public void setResult (String result) {
this.result = result;
}
}