最近项目上需要同步数据,数据来源是一个webservice接口,以前都是写restful接口,这次试着写了一个webservice接口,下面我把这次写的接口分享出来,供大家参考。
1、先上pom.xml依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-ws</artifactId>
<version>1.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
</dependency>
2、核心调用方法
/**
* 调用webservice 接口
*
* @param method 调用方法名
* @param loginParams 接口传入参数
* @return
*/
public MessageVO invoke(String method, LoginParamsVO loginParams) {
try {
// 创建动态客户端
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
logger.info("初始化cxf调用webservice地址为:" + WSDL_Url);
Client client = dcf.createClient(WSDL_Url);
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); // 策略
httpClientPolicy.setConnectionTimeout(3600);
httpClientPolicy.setAllowChunking(false);
HTTPConduit http = (HTTPConduit) client.getConduit();
http.setClient(httpClientPolicy);
String aUserName = loginParams.getAUserName();
String aPassword = loginParams.getAPassword();
String aConnectionName = loginParams.getAConnectionName();
// 调logon方法,获取token
Object[] loginCode = client.invoke(method, aUserName, aPassword, aConnectionName);
System.out.println("接口调用成功!");
}catch(Exception e){
logger.error("Interface exception, please try again later!", e);
}
亲测可用,具体细节由于时间的关系就不一一展示了。有什么疑问欢迎大家留言。