已解决
CXF调用webservice跳过https认证
来自网友在路上 157857提问 提问时间:2023-10-09 15:29:07阅读次数: 57
最佳答案 问答题库578位专家为你答疑解惑
1、相关依赖
compile ('org.apache.cxf:cxf-spring-boot-starter-jaxws:3.5.5')
2、添加配置
package com.tele.health.operation.api.listener;import org.apache.cxf.configuration.jsse.TLSClientParameters;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transport.http.HTTPConduitConfigurer;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.springframework.context.annotation.Configuration;
import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;@Configuration
public class SoapHTTPConduitConfigurer implements HTTPConduitConfigurer {public void configure(String name, String address, HTTPConduit c) {try{HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
// httpClientPolicy.setConnectionTimeout(itfConfig.getConnectionTimeout());
// httpClientPolicy.setReceiveTimeout(itfConfig.getSoTimeout());c.setClient(httpClientPolicy);SSLContext context = createIgnoreVerifySSL();TLSClientParameters params = c.getTlsClientParameters();if (params == null) {params = new TLSClientParameters();}params.setSslContext(context);//SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory(context,// new String[] { "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" }, null, NoopHostnameVerifier.INSTANCE);params.setSSLSocketFactory(context.getSocketFactory());params.setHostnameVerifier((s, sslSession) -> true);c.setTlsClientParameters(params);}catch(Exception e){e.printStackTrace();}}public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {SSLContext sc = SSLContext.getInstance("TLS");// 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法X509TrustManager trustManager = new X509TrustManager() {@Overridepublic void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,String paramString) throws CertificateException {}@Overridepublic void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,String paramString) throws CertificateException {}@Overridepublic java.security.cert.X509Certificate[] getAcceptedIssuers() {return null;}};sc.init(null, new TrustManager[]{trustManager}, null);return sc;}
}
3、调用webservice
BusFactory bf = CXFBusFactory.newInstance();
Bus bus = bf.createBus();
bus.setExtension(new SoapHTTPConduitConfigurer(), HTTPConduitConfigurer.class);
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(bus);
Client client =null;
try{client = dcf.createClient("https://ip:端口/csp/hsb/DHC.Published.PUB0002.BS.PUB0002.CLS?WSDL=1");
}catch(Exception e){e.printStackTrace();logger.info("webservice连接失败,失败原因:"+e.getMessage());
}
Object[] objects = new Object[0];
try {objects = client.invoke("方法名","参数");
}catch(Exception e){e.printStackTrace();logger.error("调用webservic方法失败:");
}
查看全文
99%的人还看了
相似问题
- Kotlin学习——kt里的集合,Map的各种方法之String篇
- Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
- composer切换全局镜像源的方法
- Python通过selenium调用IE11浏览器报错解决方法
- 测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发
- Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
- 类方法,静态方法和实例方法的区别及应用场景
- 【链表的说明、方法---顺序表与链表的区别】
猜你感兴趣
版权申明
本文"CXF调用webservice跳过https认证":http://eshow365.cn/6-17867-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!