从最后列出的ProcessRequestBean类生成,
这就是我得到的:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cel="http://www.myweb.com">
<soapenv:Header/>
<soapenv:Body>
<cel:processRequestOp>
<processReq>
<!--Optional:-->
<serviceID> 1 </serviceID>
<!--Zero or more repetitions:-->
<parameter>
<!--Optional:-->
<name> myname </name>
<!--Optional:-->
<value> myvalue </value>
</parameter>
</processReq>
</cel:processRequestOp>
</soapenv:Body>
</soapenv:Envelope>
但这就是我想要的:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cel="http://www.myweb.com">
<soapenv:Header/>
<soapenv:Body>
<cel:processRequestOp>
<!--Optional:-->
<serviceID>1</serviceID>
<!--Zero or more repetitions:-->
<parameter>
<!--Optional:-->
<name> myname </name>
<!--Optional:-->
<value> myvalue </value>
</parameter>
</cel:processRequestOp>
</soapenv:Body>
</soapenv:Envelope>
注意,从此结构中删除的exta parent(processReq)元素。
我的SEI看起来像这样:
@WebService(name="QueryThirdParty", targetNamespace = "http://www.myweb.com")
@SOAPBinding(style = Style.RPC)
public interface QuerySEI {
public static final String targetNS = "http://www.myweb.com";
@WebMethod(operationName = "processRequestOp", action = "get_them")
@RequestWrapper(className = "biz.webservice.query3rdpartyaccount.ProcessRequestBean", localName = "localName", partName = "partName")
@ResponseWrapper(className = "biz.webservice.query3rdpartyaccount.ProcessResponseBean")
@WebResult(partName = "processResp", name = "processRequestResponse")
public ProcessResponseBean getAccountNumbers(@WebParam(partName = "processReq", name = "ProcessRequestBean", mode = Mode.IN) ProcessRequestBean request);
}
和ProcessRequestBean类如下所示:
@XmlRootElement(name = "processRequest") //the name of the XML root element
@XmlType(propOrder = {"serviceID", "parameter"})
public class ProcessRequestBean {
private String serviceID;
private List<RequestParameterElement> parameter;
public ProcessRequestBean(String serviceID, List<RequestParameterElement> parameter) {
this.serviceID = serviceID;
this.parameter = parameter;
}
public ProcessRequestBean() {
}
@XmlElement(name = "serviceId")//xml name of this property
public String getServiceID() {
return serviceID;
}
public void setServiceID(String serviceID) {
this.serviceID = serviceID;
}
@XmlElement(name = "parameter")
public List<RequestParameterElement> getParameter() {
return parameter;
}
public void setParameter(List<RequestParameterElement> parameter) {
this.parameter = parameter;
}
}
感谢所有帮助
答案 0 :(得分:0)
请尝试在您的SEI和ProcessRequestBean类中进行以下更改,
<强> SEI 强>
@WebResult(partName = "processResp", name = "processRequestResponse")
public ProcessResponseBean getAccountNumbers(ProcessRequestBean request);
}
ProcessRequestBean类
摆脱@XmlRootElement(name =&#34; processRequest&#34;)注释..
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {"serviceID", "parameter"})
public class ProcessRequestBean {
private String serviceID;
private List<RequestParameterElement> parameter;
public ProcessRequestBean(String serviceID, List<RequestParameterElement> parameter) {
......
......
......
如果它没有解决你的问题,请告诉我。