WSDL4J解析WSDL 获取方法 java工具类
时间: 2023-11-18 12:08:04 浏览: 228
Axis 把WSDL生成JAVA类
5星 · 资源好评率100%
你可以使用WSDL4J库来解析WSDL文件并生成相应的Java类。以下是一个简单的Java工具类,可以使用WSDL4J来获取指定WSDL文件中的方法:
```java
import java.util.List;
import javax.wsdl.*;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
public class WSDLParser {
public static void main(String[] args) throws Exception {
String wsdlUrl = "http://localhost:8080/HelloWorld?wsdl";
List<String> methods = getMethodsFromWSDL(wsdlUrl);
System.out.println(methods);
}
public static List<String> getMethodsFromWSDL(String wsdlUrl) throws Exception {
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
Definition definition = reader.readWSDL(wsdlUrl);
List<Service> services = definition.getServices().values().stream().toList();
if (services.size() == 0) {
throw new Exception("No services found in WSDL");
}
Service service = services.get(0);
List<Port> ports = service.getPorts().values().stream().toList();
if (ports.size() == 0) {
throw new Exception("No ports found in WSDL service");
}
Port port = ports.get(0);
Binding binding = port.getBinding();
List<BindingOperation> operations = binding.getBindingOperations();
List<String> methodNames = operations.stream()
.map(BindingOperation::getName)
.toList();
return methodNames;
}
}
```
在上面的代码中,我们首先创建了一个`WSDLFactory`实例,然后使用该工厂创建一个`WSDLReader`实例。接下来,我们使用`WSDLReader`读取指定的WSDL文件,并获取其`Definition`对象。从`Definition`对象中,我们获取该WSDL文件中的`Service`对象列表。如果找不到任何服务,则会引发异常。
接下来,我们选择第一个服务,并获取其`Port`对象列表。如果找不到任何端口,则会引发异常。我们选择第一个端口,并获取其`Binding`对象。从`Binding`对象中,我们获取所有的`BindingOperation`对象列表。最后,我们从每个`BindingOperation`对象中获取其方法名,并返回一个字符串列表。
你可以将上述代码保存为一个Java类文件,然后在你的应用程序中调用`getMethodsFromWSDL()`方法来获取WSDL文件中的方法列表。
阅读全文