java如何调用webservice
调用WebService的方法
Java调用WebService可以通过多种方式实现,以下是常见的几种方法:
使用JAX-WS生成客户端代码
通过JDK自带的wsimport工具生成客户端代码,适用于SOAP协议WebService。
-
生成客户端代码 在命令行中执行以下命令:
wsimport -keep -p com.example.client http://example.com/service?wsdl参数说明:
-keep:保留生成的.java文件-p:指定生成代码的包名- 最后是WSDL地址
-
调用服务
// 创建服务实例 ServiceService service = new ServiceService(); ServicePortType port = service.getServicePort(); // 调用方法 String result = port.someMethod("param");
使用Apache CXF框架
CXF是一个功能强大的WebService框架,支持SOAP和REST。

-
添加Maven依赖
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.5.5</version> </dependency> -
动态调用示例
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf.createClient("http://example.com/service?wsdl"); Object[] result = client.invoke("methodName", "param1", "param2"); String response = (String) result[0];
使用Spring Web Services
适用于Spring项目集成WebService调用。
-
添加依赖

<dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-core</artifactId> <version>3.1.0</version> </dependency> -
配置和使用
WebServiceTemplate template = new WebServiceTemplate(); StringResult result = new StringResult(); template.sendSourceAndReceiveToResult( "http://example.com/service", new StringSource("<request>...</request>"), result); String response = result.toString();
使用HttpURLConnection直接调用
适用于简单的RESTful WebService。
URL url = new URL("http://example.com/api/resource");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
String response = content.toString();
使用第三方HTTP客户端
如Apache HttpClient或OkHttp。
Apache HttpClient示例:
CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("http://example.com/api");
CloseableHttpResponse response = client.execute(request);
String result = EntityUtils.toString(response.getEntity());
注意事项
- 确保网络连接正常,能访问目标WebService地址
- 检查WSDL或API文档了解正确的调用方式
- 处理可能的异常情况,如网络超时、服务不可用等
- 根据服务要求设置必要的请求头,如Content-Type、Authorization等
- 考虑使用连接池管理HTTP连接以提高性能
根据具体需求选择合适的调用方式,JAX-WS适合规范的SOAP服务,CXF功能更全面,直接HTTP调用则更灵活轻量。






