目录
- 一、webservice在线验证服务端接口地址
- 二、使用 axis 实现webservice客户端代码示例
- 2.1、服务端地址使用qq在线接口验证接口
- 2.2、webservice客户端示例代码
一、webservice在线验证服务端接口地址
- qq 在线验证接口:http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
- email在线验证接口:http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl
- 全国天气在线验证接口:http://www.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
二、使用 axis 实现webservice客户端代码示例
2.1、服务端地址使用qq在线接口验证接口
- 访问qq 在线验证接口,然后找到下图中定义的内容:
2.2、webservice客户端示例代码
-
pom文件引入依赖
<!-- webservice start --> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> <!-- 解决cell转换问题--> <dependency> <groupId>javax.xml.rpc</groupId> <artifactId>javax.xml.rpc-api</artifactId> <version>1.1.1</version> </dependency> <!--解析调用结果以及数据转换包--> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.2</version> </dependency> <dependency> <groupId>javax.xml.soap</groupId> <artifactId>javax.xml.soap-api</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.3</version> </dependency> <!-- webservice end-->
-
示例代码
package com.xz.jdk11.webservice; import lombok.extern.slf4j.Slf4j; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.handlers.soap.SOAPService; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import java.util.HashMap; import java.util.Map; /** * @description: * @author: xz */ @Slf4j public class webServiceClient { /** * @param url WSDL的地址 * @param targetNamespace 命名空间,这个地址在你的wsdl打开后可以看到的, * 上面有写着targetNamespace="http://xxx",这个就是你的命名空间值了; * @param method 具体方法的调用URI * */ public static String invokeRemote(String url, String targetNamespace,String serviceName, String method, Map<String, String> param){ String qqCode=param.get("qqCode"); log.info("webservice客户端调用[WSDL的地址]url=={},[命名空间]targetNamespace=={},[方法]method===={},[参数]param===={}",url,targetNamespace,method,param.toString()); String result=""; try { //创建服务调用对象 Service service = new Service(); //通过service创建call对象 Call call = (Call) service.createCall(); //设置响应超时 call.setTimeout(3000); call.setTargetEndpointAddress(new java.net.URL(url)); //设置调用方法 call.setOperationName(new QName(targetNamespace,method)); // 设置参数名 :参数名 ,参数类型:String, 参数模式:\'IN\' or \'OUT\' call.addParameter(new QName(targetNamespace, "qqCode"), XMLType.XSD_STRING, ParameterMode.IN); //设置传入服务端的字符集格式如utf-8等 call.setEncodingStyle("UTF-8"); // 设置返回类型 call.setReturnType(XMLType.XSD_STRING); //启用soap call.setUseSOAPAction(true); //设置soapAction String soapAction=targetNamespace+method; call.setSOAPActionURI(soapAction); //设置服务名 SOAPService soapService = new SOAPService(); soapService.setName(serviceName); call.setSOAPService(soapService); Object obj=null; try { // 远程调用 obj=call.invoke(new Object[]{qqCode}); } catch (Exception e) { e.printStackTrace(); } result =obj.toString(); log.info("soap请求报文==={}",call.getMessageContext().getRequestMessage().getSOAPPartAsString()); log.info("soap响应报文==={}",call.getResponseMessage().getSOAPPartAsString()); log.info("result===={}",result); } catch (Exception e) { e.printStackTrace(); } return result; } public static void main(String[] args) { String url="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx"; String targetNamespace="http://WebXml.com.cn/"; String serviceName="qqOnlineWebService"; String method="qqCheckOnline"; Map<String, String> param=new HashMap<>(); param.put("qqCode","1325169021"); invokeRemote(url,targetNamespace,serviceName,method,param); } }
-
运行查看输出结果