2011-09-01 234 views
1

我正在通过传递wsdl_URL和操作名称作为参数来寻找一些java开源api来生成soap请求xml文件。其实soapUI是这样做的,我试图通过soapUI源代码,但我无法理解整个代码来完成我的任务。如何从java中的wsdl文件生成SOAP请求xml

是否有任何Java API可以做到这一点(Apache或东西)?

我在网上呆了几天,没有看到任何结果。

如果任何机构有任何想法,请帮助我。

在此先感谢。

回答

2
+0

你好本杰明,谢谢你的回复。我没有找到任何有用的java API来创建soapUI中的请求XML文件。他们正在谈论ServiceClient类,但我不明白如何使用该类。 – srini

+0

我如何使用soap和java工作的一般方法是从你的wsdl生成一个对象模型,并与之对抗。像这样http://ws.apache.org/axis/java/user-guide.html#WSDL2JavaBuildingStubsSkeletonsAndDataTypesFromWSDL –

3

您可以使用开源膜SOA库(http://www.membrane-soa.org/soa-model-doc/1.4/java-api/parse-wsdl-java-api.htm)生成WSDL中定义的每个操作个XML:

public void createTemplates(String url){ 

    WSDLParser parser = new WSDLParser(); 
    Definitions wsdl = parser.parse(url); 
    StringWriter writer = new StringWriter(); 
    SOARequestCreator creator = new SOARequestCreator(); 
    creator.setBuilder(new MarkupBuilder(writer)); 
    creator.setDefinitions(wsdl); 

    for (Service service : wsdl.getServices()) { 
     for (Port port : service.getPorts()) { 
      Binding binding = port.getBinding(); 
      PortType portType = binding.getPortType(); 
      for (Operation op : portType.getOperations()) { 
       creator.setCreator(new RequestTemplateCreator()); 
       creator.createRequest(port.getName(), op.getName(), binding.getName()); 
       System.out.println(writer); 
       writer.getBuffer().setLength(0); 
     } 
    } 
} 
2

肥皂UI还提供Java Api用于从WSDL创建请求和响应xml。

public static void main(String[] args) throws Exception { 
     WsdlProject project = new WsdlProject(); 
     WsdlInterface[] wsdls = WsdlImporter.importWsdl(project, "http://localhost:8080/Service?wsdl"); 
     WsdlInterface wsdl = wsdls[0]; 
     for (Operation operation : wsdl.getOperationList()) { 
      WsdlOperation wsdlOperation = (WsdlOperation) operation; 
      System.out.println("Request:\n"+wsdlOperation.createRequest(true)); 
      System.out.println("\nResponse:\n"+wsdlOperation.createResponse(true)); 

     } 
    } 

肥皂UI的Developer's corner具有与肥皂UI API整合好的指针。