Create SOAP Request Template with Java
The Membrane SOA Model can create SOAP request Templates out of a WSDL document, filled with sample data in respect to their type definition.
package sample.wsdl; import groovy.xml.MarkupBuilder; import java.io.StringWriter; import com.predic8.wsdl.Definitions; import com.predic8.wsdl.WSDLParser; import com.predic8.wstool.creator.RequestTemplateCreator; import com.predic8.wstool.creator.SOARequestCreator; public class CreateSOAPRequestTemplate { public static void main(String[] args) { WSDLParser parser = new WSDLParser(); Definitions wsdl = parser.parse("resources/article/article.wsdl"); StringWriter writer = new StringWriter(); //SOAPRequestCreator constructor: SOARequestCreator(Definitions, Creator, MarkupBuilder) SOARequestCreator creator = new SOARequestCreator(wsdl, new RequestTemplateCreator(), new MarkupBuilder(writer)); //creator.createRequest(PortType name, Operation name, Binding name); creator.createRequest("ArticleServicePT", "create", "ArticleServicePTBinding"); System.out.println(writer); } }
Listing 1: CreateSOAPRequestTemplate
Using the code above you get the following soap request message.
<s11:Envelope xmlns:s11='http://schemas.xmlsoap.org/soap/envelope/'> <s11:Body> <ns1:create xmlns:ns1='http://predic8.com/wsdl/material/ArticleService/1/' id='?999?'> <article xmlns:ns1='http://predic8.com/material/1/'> <name>?XXX?</name> <description>?XXX?</description> <price xmlns:ns1='http://predic8.com/common/1/'> <amount>?999.99?</amount> <!-- possible value: EUR, possible value: USD --> <currency xmlns:ns1='http://predic8.com/common/1/'>???</currency> </price> <!-- Pattern: [A-Z]{2}-\d{5} --> <id xmlns:ns1='http://predic8.com/material/1/'>???</id> </article> </ns1:create> </s11:Body> </s11:Envelope>
Listing 2: Created soap request template