I am tried to consuming SOAP web service in Spring Boot. and generated the classes using Axis.
I am sending the soap request from client and it is changing the format of the request while going to server.
Please find the client sending request and server receiving request as below:
SOAP Client sending Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prim="http://..../..Services">
<soapenv:Header />
<soapenv:Body>
<prim:UserList>
<prim:XMLRequest>
<prim:Header>
<prim:MessageID>1</prim:MessageID>
<prim:CorrelationID>1</CorrelationID>
</prim:Header>
</prim:XMLRequest>
</prim:UserList>
</soapenv:Body>
</soapenv:Envelope>
SOAP Server receiving Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<UserList xmlns="hhttp://..../..Services">
<XMLRequest>
<header>
<MessageID>1</MessageID>
<CorrelationID>1</CorrelationID>
</header>
</XMLRequest>
</UserList>
</soapenv:Body>
</soapenv:Envelope>
Trying to call using below code:
public UserListResponse UserListService(UserList request)
throws RemoteException, ServiceException {
UserListRequest xmlRequest = new UserListRequest();
Header reqHeader = request.getXMLRequest().getHeader();
Header header = new Header();
header.setCorrelationID(reqHeader.getCorrelationID());
header.setMessageID(reqHeader.getMessageID());
xmlRequest.setHeader(header);
return soapStub.UserList(xmlRequest);
}
Axis Serializer & deSerializer code as below:
// Type metadata
private static org.apache.axis.description.TypeDesc typeDesc =
new org.apache.axis.description.TypeDesc(Header.class, true);
static {
typeDesc.setXmlType(new javax.xml.namespace.QName("http://..../..Services", "Header","prim"));
org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("messageID");
elemField.setXmlName(new javax.xml.namespace.QName("http://..../..Services", "MessageID","prim"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setMinOccurs(0);
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("correlationID");
elemField.setXmlName(new javax.xml.namespace.QName("http://..../..Services", "CorrelationID","prim"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setMinOccurs(0);
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
}
/**
* Return type metadata object
*/
public static org.apache.axis.description.TypeDesc getTypeDesc() {
return typeDesc;
}
/**
* Get Custom Serializer
*/
public static org.apache.axis.encoding.Serializer getSerializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return
new org.apache.axis.encoding.ser.BeanSerializer(
_javaType, _xmlType, typeDesc);
}
/**
* Get Custom Deserializer
*/
public static org.apache.axis.encoding.Deserializer getDeserializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return
new org.apache.axis.encoding.ser.BeanDeserializer(
_javaType, _xmlType, typeDesc);
}
Can anyone please help on this.