https请求SOAP webService接口

简介: https请求SOAP webService接口

本文章向大家介绍 https访问带有SOAP协议头,需要用户验证的webservice接口,主要包括https请求SOAP webService接口使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。


模拟soapui调用webservice

publicstaticStringsoapSpecialConnection(Stringurl,Stringparams) throwsException {        Strings=newString();        StringBuildersoapHeader=newStringBuilder();        // 传来字符串参数        soapHeader.append(params);        System.out.println("soapHeader=" + soapHeader);        // 设置soap请求报文的相关属性        // url从soapUI的request1的RAW标签的POST获取,url中不要有空格        URL u = new URL(url);        HttpURLConnection conn = (HttpURLConnection) u.openConnection();        conn.setDoInput(true);        conn.setDoOutput(true);        conn.setUseCaches(false);        conn.setDefaultUseCaches(false);        // Host,Content-Type,SOAPAction从soapUI的request1的RAW标签的Host,Content-Typ,SOAPActione获取        conn.setRequestProperty("Host", "test.com:95443");        conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");        conn.setRequestProperty("Accept-Encoding", "gzip,deflate");        conn.setRequestProperty("Authorization", "Basic ABCBCBC");        conn.setRequestProperty("Content-Length", String.valueOf(soapHeader.length()));        conn.setRequestProperty("SOAPAction", "");        conn.setRequestProperty("Username", "AAAAA");        conn.setRequestProperty("Password", "BBBB");          // 定义输出流        OutputStream output = conn.getOutputStream();        if (null != soapHeader) {            byte[] b = soapHeader.toString().getBytes("utf-8");            // 发送soap请求报文            output.write(b, 0, b.length);        }        output.flush();        output.close();        // 定义输入流,获取soap响应报文        InputStream input = conn.getInputStream();        // 需设置编码格式,否则会乱码        s = IOUtils.toString(input, "UTF-8");        input.close();        System.out.println("输出的xml=" + s);        return s;    }


既然是HTTPS请求,就需要绕过证书并击中web服务,使HTTPS SOAP请求绕过SSL证书。


public class ConnectHttps {     public static void main(String[] args) throws Exception {     /* * fix for * Exception in thread "main" javax.net.ssl.SSLHandshakeException: *  sun.security.validator.ValidatorException: *   PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: *    unable to find valid certification path to requested target */ TrustManager[] trustAllCerts = new TrustManager[] {     new X509TrustManager() {      public java.security.cert.X509Certificate[] getAcceptedIssuers() {      return null;      } 
     public void checkClientTrusted(X509Certificate[] certs, String authType) { } 
     public void checkServerTrusted(X509Certificate[] certs, String authType) { } 
    } }; 
SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
// Create all-trusting host name verifier HostnameVerifier allHostsValid = new HostnameVerifier() {     public boolean verify(String hostname, SSLSession session) {      return true;     } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); /* * end of the fix */     } }


客户端调用



String webServiceAndSoap = soapSpecialConnection(url,requestXml);System.out.println(webServiceAndSoap);


以上是https请求SOAP webService接口全部内容了。大家喜欢记得关注公主号【全栈芬达】,记得点赞哦!


相关文章
|
7月前
|
存储 运维 自然语言处理
CRAG 架构解析:如何在生成器前修正错误检索结果
CRAG是一种新型RAG框架,直面检索错误问题:引入轻量级评估器,对检索文档打分并按置信度分流——高分则精炼本地文档(句子级过滤重组),低分则转向网络搜索,中等分则双源协同。从架构上杜绝无关内容污染生成器,显著提升答案准确性与鲁棒性。
414 1
CRAG 架构解析:如何在生成器前修正错误检索结果
|
6月前
|
Java 应用服务中间件 C++
Spring Boot 打包部署,JAR vs WAR
无论选择JAR还是WAR部署方式,关键在于匹配团队的技术栈、运维能力和业务需求。Spring Boot的灵活性支持两种部署模式,为不同场景提供了合适的解决方案。
404 6
|
9月前
|
Java
org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
SpringBoot项目启动报错YAML编码异常,通常因文件编码不一致导致。将IDEA中File Encodings设为UTF-8并重建项目(Rebuild Project)即可解决。
467 4
|
安全 Java 测试技术
如何创建一个信任所有证书的`TrustManager`
`TrustManager`是Java中用于管理SSL/TLS信任关系的接口,主要用于验证服务器证书。本文介绍了如何创建一个信任所有证书的`TrustManager`,并通过示例代码展示了具体的实现步骤。虽然这种方法在测试环境中很有用,但在生产环境中使用时存在严重的安全风险。
1844 3
|
Linux
LINUX 出现 -BASH-4.2# 问题的解决方法
LINUX 出现 -BASH-4.2# 问题的解决方法
1653 0
|
项目管理 Python
如何在Mac上安装多个Python环境
在你的Mac上使用多个Python环境可以对项目管理很有帮助,特别是在同时处理不同Python版本或不同的包需求时。在这篇文章中,我们将向你展示如何在Mac上轻松地安装和管理多个Python环境。
932 5
 如何在Mac上安装多个Python环境
|
存储 前端开发 JavaScript
uni-app:基础组件 (上)
本文介绍了uni-app中多个组件的使用方法,包括存储操作、图标展示、按钮样式、表单输入、导航跳转和输入框控制等。通过具体代码示例展示了如何设置存储键值、使用不同类型的按钮、实现表单提交与重置功能、控制输入框的显示与清除等功能。
497 0
|
关系型数据库 MySQL 数据库
MySQL 启动日志报错: File /mysql-bin.index not found (Errcode: 13 - Permission denied)
MySQL 启动日志报错: File /mysql-bin.index not found (Errcode: 13 - Permission denied)
1409 2
|
存储 前端开发 数据库
MVC模式和三层架构
MVC模式和三层架构
|
安全 Java 网络安全
HTTPS的TLS/SSL协议详解及Java代码示例
HTTPS的TLS/SSL协议详解及Java代码示例
1232 0

热门文章

最新文章