将XML发送到JERSEY Web服务时出错

时间:2012-06-25 18:36:29

标签: web-services xml-serialization jersey

我正在开发一个JERSEY RESTFUL Web服务,它具有接受对象参数的功能。它被称为“同步”,看起来像这样:

@XmlRootElement
public class Synchronize {

private List<PHQ9> phq9OutOfSync;
private List<ExtraQuestions> extraQuestionsOutOfSync;
private List<Suicide> suicideOutOfSync;
private List<Brugha> brughaOutOfSync;
private int hola;

public Synchronize() {

    phq9OutOfSync = new ArrayList<PHQ9>();
    extraQuestionsOutOfSync = new ArrayList<ExtraQuestions>();
    suicideOutOfSync = new ArrayList<Suicide>();
    brughaOutOfSync = new ArrayList<Brugha>();
}
}

问题是我无法将带有此类序列化的xml发送到Web服务。我发送了一个包含所有属性的xml,但它没有很好地反序列化...我不知道是不是因为列表出现了一些问题。我甚至尝试只发送int属性,如:

<synchronize><hola>1</hola></synchronize>

并且也不起作用......发生了什么事?

任何提示?

编辑:我看到我不知道如何引用类中的属性。我尝试创建一个接受带有phq9对象的列表的Web服务,它工作得很好,但是如果我将该列表放在其他类中,那么它就不知道如何反序列化。为什么会这样?

EDIT2:

@XmlRootElement
public class PHQ9 {

@XmlElement
private int id;
@XmlElement
private int patientId;
@XmlElement
private int answer1;
@XmlElement
private int answer2;
@XmlElement
private int answer3;
@XmlElement
private int answer4;
@XmlElement
private int answer5;
@XmlElement
private int answer6;
@XmlElement
private int answer7;
@XmlElement
private int answer8;
@XmlElement
private int answer9;
@XmlElement
private int answer10;
@XmlElement
private int total;
@XmlElement
private int week;
@XmlElement
private String phq9Date;
@XmlElement
private String timeExported;
@XmlElement
private String dateExported;
@XmlElement
private int exported;

public PHQ9() {

    phq9Date = timeExported = dateExported = "";        
}
}

1 个答案:

答案 0 :(得分:0)

[编辑]

关于列表,如果需要,请查看JAXB: How to marshal objects in lists?如何包装列表。

您可以使用XmlAccessorType(http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/XmlAccessorType.html)和XmlElement(http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/XmlElement.html)限制要序列化的成员。

您可能正在尝试序列化/反序列化不受支持的类,从而导致其失败。你有任何例外,还是只是默默地失败?您是否尝试过查看发送/接收的原始数据?