Java Web服务方法结果的类是什么?
一个合作伙伴给了我一个用于他们Web服务的WSDL。我对Web服务不是很有经验,所以我对WSDL有些怀疑。有一种特定的方法允许我们获取一些信息,但我们只能使用一次(否则将面临惩罚)。问题是,它在SOAP响应中以“原始XML”的形式返回,因此我不确定将返回什么,以及如何处理和正确存储它 WSDL的相关部分如下所示:Java Web服务方法结果的类是什么?,java,web-services,wsdl,Java,Web Services,Wsdl,一个合作伙伴给了我一个用于他们Web服务的WSDL。我对Web服务不是很有经验,所以我对WSDL有些怀疑。有一种特定的方法允许我们获取一些信息,但我们只能使用一次(否则将面临惩罚)。问题是,它在SOAP响应中以“原始XML”的形式返回,因此我不确定将返回什么,以及如何处理和正确存储它 WSDL的相关部分如下所示: <s:element name="MethodResponse"> <s:complexType> <s:sequence>
<s:element name="MethodResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="MethodResult">
<s:complexType mixed="true">
<s:sequence>
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
提前感谢。混合内容元素在JAXB中处理起来有点棘手 您的
列表可以是以下内容的组合:
字符串
,表示元素中的文本内容
JAXBElement
,表示架构已知的元素类型,这些元素类型没有@XmlRootElement
注释
- 上下文已知的具有
@XmlRootAnnotation
org.w3c.dom.Element
如果上下文不知道内容
@XmlMixed
的javadoc更详细,但这是它的基础。我想说,这样一个通用的WSDL是完全无用的。没有契约,没有类型安全,对WSDL没有好处。通过检查你学到了什么?没什么 好的,从简单的测试来看,Axis2似乎不能做这些事情,只是抛出了一个异常。几天前我发现了对象是什么:它是一个列表,其中每个对象都是org.w3c.dom.Element。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"methodResult"
})
@XmlRootElement(name = "MethodResponse")
public class MethodResponse {
@XmlElement(name = "MethodResult")
protected MethodResponse.MethodResult methodResult;
public MethodResponse.MethodResult getMethodResult() {
return methodResult;
}
public void setMethodResult(MethodResponse.MethodResult value) {
this.methodResult = value;
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"content"
})
public static class MethodResult {
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> content;
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
}
}
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Could not deserialize Soap message