Spring基于soap协议的webservice调用
1.创建客户端
①创建业务模块调用的发送给服务端的请求接口
public interface AcceptanceOrderRemoteService {
/* *
*设备验收单审批完成发送审批流程给oa
* @param archive 验收单的设备档案信息
* @return 返回结果的请求id
*/
String sendAcceptance(CheckAndAcceptOrderArchive archive):
}
实现类
public interface AcceptanceOrderRemoteServiceImpl {
private String sendAcceptance(){
//初始化
JaxWsDynamicClientFactory factory = JaxWsDynamicclientFactory.newInstance();
//创建客户端的url连接
client client =factory.createclient("http://192,168,100.230/services/WorkflowService..?wsdl");
//打印请求地址,url,参数等一系列信息,这是打印我们服务发送的信息!!!
client.getInInterceptors().add(new LoggingInInterceptor());
//需要密码的情况需要加上用户名和密码
//client.getoutInterceptors() .add(new
// clientLoginInterceptor(USER_NAME,PASS_WORD));
HTTPConduit conduit = (HTTPConduit) client.getConduit();
HTTPclientPolicy httpclientPolicy = new HTTPclientPolicy();
httpclientPolicy.setConnectionTimeout(2000); // 连接超时
httpclientPolicy.setALlowChunking(false); // 取消块编码
httpclientPolicy.setReceiveTimeout(120000); // 响应超时
XxLJobLogger.log("=========>>> 准备调用invoke方法 ");
//调用发送方法invoke("请求的方法名","参数1","参数2",...) 多个参数传递
object[] result = client.invoke("doCreatelorkflowRequest",request,3159);
//日志打印服务端返回的soap整个请求体数据
client.getOutInterceptors().add(new LoggingoutInterceptor());
XxlJobLogger,log("=========>>> 调用invoke方法结束,返回值是”+ result);XxlJobLogger,log("=========>>> 调用 invoke方法结束,返回值是”+ Jsons,toJson(result));return new ReturnT(Isons.toJson(result));
}
}
到此数据就发送成功拉!
2.使用soapUI连接服务端进行接口测试
3.使用工具soapUI工具进行接口测试
使用soapUI测试工具连接对应服务的测试地址:
找到对应的方法,创建一个测试连接请求,该请求页面会显示所需要的参数请求,进行请求测试!!!
3.注意避坑!
我在使用的过程中没有加上发送的webservice的打印日志方法,导致我请求的时候报错了 但是找不到问题,一直以为是没有发送成功。一定要注意加上日志打印!!!
//打印请求地址,url,参数等一系列信息,这是打印我们服务发送的信息!!!
client.getInInterceptors().add(new LoggingInInterceptor());
//日志打印服务端返回的soap整个请求体数据
client.getOutInterceptors().add(new LoggingoutInterceptor());