Demo代码:https://github.com/earnext/test-webservice
需求:客户端调取服务端WebService接口插入用户数据。
目录:
- WebService生成客户端代码两种方式
- WebService常用注解
- 编写服务端(发布服务)
3.1. WebService服务端业务代码
3.2. WebService服务端配置(发布服务)- 编写客户端(调取接口)
4.1. 通过Apache CXF生成客户端代码调取WebService接口
4.2. 通过HttpURLConnection工具调取WebService接口
4.3. 通过HttpClient工具调取WebService接口
/**
* WebServices配置
*
* @author Dongxibao
* @date 2020-05-30
*/
@Slf4j
@Configuration("webServicesConfig")
public class WebServicesConfig {
@Autowired
private Bus bus;
@Autowired
private TestServerService testServerService;
/**
* 拦截指定路径
* @return
*/
@Bean
public ServletRegistrationBean disServletDemandService() {
return new ServletRegistrationBean(new CXFServlet(), "/webservice/*");
}
/**
* 报文拦截打印
* @return
*/
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
SpringBus springBus = new SpringBus();
LoggingFeature logFeature = new LoggingFeature();
logFeature.setPrettyLogging(true);
logFeature.initialize(springBus);
springBus.getFeatures().add(logFeature);
return springBus;
}
/**
* 发布服务
* 游览器访问:http://localhost:8081/webservice/insert-user?wsdl
*
* wsdl2java -d E:\apache-cxf-3.3.4\genCXFcode -encoding utf-8 -p com.dongxibao.client.webservice http://localhost:8081/webservice/insert-user?wsdl
* wsimport -s E:\genCXFcode -p com.dongxibao.client.webservice http://localhost:8081/webservice/insert-user?wsdl
* @return
*/
@Bean
public Endpoint endpointInsertUser() {
EndpointImpl endpoint = new EndpointImpl(bus, testServerService);
try {
endpoint.publish("/insert-user");
} catch (Exception e) {
log.error("[测试webservice插入用户]报错:[{}], [{}]", e, e.getMessage());
}
return endpoint;
}
}