CXF 处理WS https及接口地址address location不一致问题

public static String cxfWsdl(WebServiceVO vo, String url, String caseNameSpace) {
        String result = null;
        log.info("WebService Info: param - [{}], url - [{}]", JSONObject.toJSONString(vo), url);

        HTTPConduitConfigurer httpConduitConfigurer = (name, address, c) -> {
            // location 重定向
            c.getTarget().getAddress().setValue(url.replace("?wsdl",""));
            // 设置超时
            HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
            httpClientPolicy.setConnectionTimeout(10000);
            httpClientPolicy.setAllowChunking(false);
            httpClientPolicy.setReceiveTimeout(60000);
            c.setClient(httpClientPolicy);
            
            // https处理
            TLSClientParameters params = c.getTlsClientParameters();
            if (params == null) {
                params = new TLSClientParameters();
            }
            params.setHostnameVerifier(new TrustAnyHostnameVerifier());
            params.setTrustManagers(new TrustManager[]{new TrustAllManager()});
            params.setDisableCNCheck(true);
            c.setTlsClientParameters(params);
        };
        Bus bus = BusFactory.getThreadDefaultBus();
        bus.setExtension(httpConduitConfigurer, HTTPConduitConfigurer.class);

        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(bus);
        Client client = dcf.createClient(url);
        Object[] objects;
        try {
            if (StringUtils.isNotBlank(caseNameSpace)) {
                QName operationName = new QName(caseNameSpace, vo.getMethodName());
                objects = client.invoke(operationName, vo.getParameters());
            } else {
                objects = client.invoke(vo.getMethodName(), vo.getParameters());
            }
            if (objects != null && objects.length > 0) {
                result = objects[0].toString().replaceAll("\r\n", "");
            }
        } catch (Exception e) {
            log.error("请求WS接口出错!", e);
        }

        return result;
    }

    public static class TrustAllManager implements X509TrustManager {

        @Override
        public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

        }

        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
            // Do Nothing
        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }

    }

    public static class TrustAnyHostnameVerifier implements HostnameVerifier {
        public boolean verify(String hostname, SSLSession session) {
            // 直接返回true
            return true;
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值