java - JAva SOAP:试图以不正确的命名空间方式创建或更改对象
问题描述
我见过这样的问题,但到目前为止它们没有帮助。
我目前在为我的 SOAP 正文中的元素设置前缀时遇到问题。我正在尝试构建的请求如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sen="http://company.org/sendmailaTTACH">
<soapenv:Header/>
<soapenv:Body>
<sen:SendMail>
<sen:plainbody>?</sen:plainbody>
</sen:SendMail>
</soapenv:Body>
</soapenv:Envelope>
能够SendMail
通过遵循这个答案将它构建到对象的位置,但是当它到达添加前缀的部分时:<sen:plainbody>
即添加sen
前缀到plainbody
我得到错误:
org.w3c.dom.DOMException: NAMESPACE_ERR: 试图以不正确的命名空间方式创建或更改对象。
该SendMail
对象如下所示:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
name = "",
propOrder = {"from", "displayname", "to", "cc", "bcc", "htmlbody", "plainbody", "subject", "imageurl"}
)
@XmlRootElement(
name = "SendMail"
)
public class SendMail {
protected String from;
protected String displayname;
protected String to;
protected String cc;
protected String bcc;
protected String htmlbody;
protected String plainbody;
protected String subject;
protected String imageurl;
public SendMail() {
}
.
.
.
//getters and setters
我猜可能是因为plainbody和其他字段有String?
有没有办法解决?
谢谢!
解决方案
想出了一个解决方案:
能够通过使用命名空间注释类属性@XmlElement
并指定命名空间来解决它
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String from;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String displayname;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String to;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String cc;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String bcc;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String htmlbody;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String plainbody;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String subject;
@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String imageurl;