通过HttpUrlConnect调用Https asmx soap接口(绕过证书)

2023-10-29

import org.springframework.http.HttpStatus;

import javax.net.ssl.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

/**
 * 通过HttpUrlConnect调用Https asmx soap接口(绕过证书)
 *
 * @Author lby
 * @Create 2019-11-3 11:41
 */
public class HttpsUrlConnectUtil {
    public static void main(String args[]) throws IOException {

        String xmlRequestBody =
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
                        + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
                        + "  <soap:Body>\n"
                        + "    <GetUserStatus xmlns=\"https://xxxx.com/WebService\">\n"
                        + "      <systemIdentificationCode>xxxxx</systemIdentificationCode>\n"
                        + "      <functionAuthorizationCode>xxxxx</functionAuthorizationCode>\n"
                        + "      <jsonOrganizationStatus></jsonOrganizationStatus>\n"
                        + "    </GetUserStatus>\n"
                        + "  </soap:Body>\n"
                        + "</soap:Envelope>";

        // 服务器地址
        String serverUrl = "https://xxxx.com/WebService/xxxxService.asmx";
        // 需要调用的方法
        String soapAction = "GetUserStatus";

        conn(xmlRequestBody, serverUrl, soapAction);
    }

    /**
     * 调用Https asmx SOAP接口
     *
     * @param xmlRequestBody SOAP XML请求体
     * @param serverUrl      SOAP服务器地址
     * @param soapAction
     * @throws IOException
     */
    public static void conn(String xmlRequestBody, String serverUrl, String soapAction) throws IOException {
        URL url = new URL(serverUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        HttpsURLConnection https = (HttpsURLConnection) conn;
        trustAllHosts(https);
        https.setHostnameVerifier(DO_NOT_VERIFY);

        // 拼接soap
        String soap = xmlRequestBody;
        byte[] buf = soap.getBytes("UTF-8");
        // 设置报头
        conn.setRequestProperty("Content-Length", String.valueOf(buf.length));
        conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
        conn.setRequestProperty("soapActionString", soapAction);
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.setDoInput(true);

        OutputStream out = conn.getOutputStream();
        out.write(buf);
        out.close();
        // 获取响应状态码
        int code = conn.getResponseCode();
        StringBuffer sb = new StringBuffer();
        if (code == HttpStatus.OK.value()) {
            InputStream is = conn.getInputStream();
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = is.read(b)) != -1) {
                String s = new String(b, 0, len, "utf-8");
                sb.append(s);
            }
            is.close();
        }
        System.out.println(sb);
    }

    /**
     * 覆盖java默认的证书验证
     */
    private static final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
        @Override
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return new java.security.cert.X509Certificate[]{};
        }

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType)
                throws CertificateException {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType)
                throws CertificateException {
        }
    }};

    /**
     * 设置不验证主机
     */
    private static final HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };

    /**
     * 信任所有
     *
     * @param connection
     * @return
     */
    private static SSLSocketFactory trustAllHosts(HttpsURLConnection connection) {
        SSLSocketFactory oldFactory = connection.getSSLSocketFactory();
        try {
            SSLContext sc = SSLContext.getInstance("TLS");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            SSLSocketFactory newFactory = sc.getSocketFactory();
            connection.setSSLSocketFactory(newFactory);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return oldFactory;
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过HttpUrlConnect调用Https asmx soap接口(绕过证书) 的相关文章

  • WebService案例实例

    WebService案例实例 前言 xff1a 由于工作需要 xff0c 写一个接口 xff0c 返回xml信息 供其他服务调用 最初使用python 43 flask框架 xff0c 能够返回出正确的xml信息 xff0c 似乎调用这个接
  • cxf+spring实现webservice

    1 构建maven项目 xff0c 工程结构如下 xff1a 这里需要特别指出就是cxf core 3 1 12 jar类路径META INF cxf下有一个cxf xml的配置文件 xff0c 这个在applicationContext
  • SQL Server调用WebAPI和WebService

    SQLSERVER调用WebAPI和WebServiceSqlServer调用webapi和webService接口 declare 64 url nvarchar max set 64 url 61 39 http XXX GetToke
  • SpringBoot整合CXF框架实现Webservice服务端

    1 前言 近期接手一个10多年的老项目 xff0c 敲重点 xff0c 10多年 xff01 xff01 xff01 就是最纯粹的servlet技术 xff0c 貌似是从2008年运维到现在 xff0c 老项目终究会有被淘汰的这一天 xff
  • cgic: CGI的C函数库

    下载回源码包以后 就3个文件 cgic c 函数库capture c 一个很简单的CGI例子 仅仅输出两行提示文字cgictest c 一个演示读取form表单数据的CGI例子 首先在vc6里创建一个空的win32静态库cgic 然后添加c
  • 使用RESTful风格api命名接口时,GET方法怎么传递多个参数

    点击上方 码农突围 马上关注 这里是码农充电第一站 回复 666 获取一份专属大礼包 真爱 请设置 星标 或点个 在看 在使用RESTful风格不同于普通借口命名的一点是 它规范使用 来表示资源之间的层级关系 对于普通形式命名的接口 假设需
  • 应用Apache Axis2 实现Webservice发布

    由于最近需要做webservice接口 所以google了一下 发现Apacle有个Axis2插件 一直觉得Apache的插件还是蛮好用的 于是决定应用Axis2来实现Webservice 第一次做webservice 呵呵有很多不懂的地方
  • Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码

    本文利用MyBatis jsp servlet html css javascript实现了一个简单的登录页面 对用户输入的用户名和密码就行校验 校验通过则登录成功 密码和用户信息保存在mysql表中 通过MyBatis访问 MyBatis
  • 彻底理解webservice SOAP WSDL

    WebServices简介 先给出一个概念 SOA 即Service Oriented Architecture 中文一般理解为面向服务的架构 既然说是一种架构的话 所以一般认为 SOA 是包含了运行环境 编程模型 架构风格和相关方法论等在
  • Webservice实践(五)基于CXF的服务端开发

    本节将实践目前最流行的第二种web service 发布和调试框架 CXF Apache CXF 是一个开放源代码框架 提供了用于方便地构建和开发 Web 服务的可靠基础架构 它允许创建高性能和可扩展的服务 您可以将这样的服务部署在 Tom
  • ScriptManager的用法

    脚本管理控件 ScriptManger 是ASP NET AJAX中非常重要的控件 通过使用ScriptManger能够进行整个页面的局部更新的管理 ScriptManger用来处理页面上局部更新 同时生成相关的代理脚本以便能够通过Java
  • 局域网访问本地localhost-VS2015调试WebService

    两点步骤 一 配置IP 二 VS管理员启动 配置ip 可以自定义IP 或者用自动分配的IP cmd ipconfig VS运行右键 显示所有应用程序 打开配置文件 在
  • Java HTTP方式请求ASP.NET(C#)WebService

    package com ideamov wap util import java io ByteArrayOutputStream import java io IOException import java io InputStream
  • webService淘汰了吗?

    当代开发者们已经很少见到相关的webService开发了 那么是该技术已经被淘汰了吗 先让我们来看看其和http接口的优劣吧 这里着重说webService 该服务协议为SOAP 简单对象访问协议 说白了就是http POST的一个专用版本
  • c#对接webservice接口

    方式一 需要填写地址 不能映射每个方法 工具类 using System using System CodeDom Compiler using System CodeDom using System Collections Generic
  • Android通过webservice连接SQLServer 详细教程(数据库+服务器+客户端)

    本文为原创 如果转载请注明出处 http blog csdn net zhyl8157121 article details 8169172 其实之前发过一篇这样的博文http blog csdn net zhyl8157121 artic
  • WebService 四种发布方式总结

    1 CXF方式 CXF与spring搭建webservice是目前最流行的方式 但是传闻cxf与jdk1 5有些不兼容 我没有遇到过 我遇到的问题是cxf与was6 1 1不兼容 表现在cxf必须的jar包 wsdl4j 1 6 2 jar
  • 【转】开发基于ASP.NET WebService的图片验证码服务

    原文地址 http www webjx com htmldata 2006 01 21 1137824356 html 最近 工作中接到一项任务 开发一个页面验证码功能 查阅了一些网上的资料 并结合以前的绘图方面的知识 实现了如下的解决方案
  • SAP与 WebService接口的配置与调用

    SAP 能通过设置WebService与外部的webservice服务连接 1 进入事务 SE80 选择 Package 指定保存的开发包 如图 创建一个Enterprise Service 2 在弹出的下一个窗口中选择 URL HTTP
  • Eclipse+webservice简单实例搭建

    文章作为学习笔记和分享用 准备工作 下载安装eclipse和axis2 1 5 4 bin zip 最新版本的搭建有问题就选择了此版本 下载本地找一个目录解压 1 指定axis2路径 Window gt Preferences gt Web

随机推荐

  • 排序(Sort)

    排序 1 排序的基本知识 2 插入类排序 2 1 直接插入排序 2 2 折半插入排序 2 3 希尔排序 3 交换类排序 3 1 冒泡排序 3 2 快速排序 4 选择类排序 4 1 简单选择排序 4 2 堆排序 5 归并排序 6 基数排序 7
  • 基于python开发一个Django博客网站项目

    基于Python和Django框架的简单博客平台 该平台提供了一个用户友好的界面 使用户能够轻松地创建和管理博客文章 评论和标签 前期环境 需要准备的环境 python3以上 创建一个虚拟环境 以兼容不同的Django版本 创建一个文件夹来
  • 图像频谱图-直方图三维可视化 python

    图像频谱图 直方图三维可视化 python代码 目录 1 条纹噪声图像 频谱图3D可视化 2 图像二维直方图3D可视化 1 条纹噪声图像 频谱图3D可视化 频谱图三维可视化思路 将图像经过傅里叶变换 中心化 取log 再3D可视化 代码 i
  • Quick Search —— 快速匹配字符串

    注 正确性有待考察 因为没有题试试水 转载 https blog csdn net superhackerzhang article details 6432559 算法说明 令模式串为p p 0 p 1 p m 1 长度为m 文本串为T
  • ELK-日志服务【kafka-配置使用】

    kafka 01 10 0 0 21 kafka 02 10 0 0 22 kafka 03 10 0 0 23 1 安装zk集群 配置 root es 01 yum y install java maven root es 01 tar
  • Geoserver 重启后引起的事故

    1 geoserver作用来由 geoserver有两种 一种作为单独一个程序来运行 另一种使用geoserver war放到容器中启动使用 Geoserver是用来发布图层 其他的服务使用链接将图层与地图嵌套可以得到想要的数据的直观页面比
  • Android 混淆使用及其字典混淆(Proguard)

    1 使用背景 ProGuard能够通过压缩 优化 混淆 预检等操作 检测并删除未使用的类 字段 方法和属性 分析和优化字节码 使用简短无意义的名称来重命名类 字段和方法 从而使代码更小 更高效 更难进行逆向工程 Android代码混淆 又称
  • 5 款逆向工具,7 款代码分析工具,11 项优化建议

    本文作者 小木箱 原文发布于 小木箱成长营 小木箱成长营 包体积优化系列文章 包体积优化 实战论 怎么做包体积优化 做好能晋升吗 能涨多少钱 包体积优化 方法论 揭开包体积优化神秘面纱 1 引言 Hello 我是小木箱 欢迎来到小木箱成长营
  • Android Jetpack组件DataStore之Proto与Preferences存储详解与使用

    一 介绍 Jetpack DataStore 是一种数据存储解决方案 允许您使用协议缓冲区存储键值对或类型化对象 DataStore 使用 Kotlin 协程和 Flow 以异步 一致的事务方式存储数据 如果您当前在使用 SharedPre
  • CentOS下GitLab的安装部署

    转载来源 https mp weixin qq com s kUwZja0xK1IfqGU6R2f1EA 一 GitLab Server的搭建 参考 https about gitlab com install 1 准备工作 以centos
  • DRRN(Image Super-Resolution via Deep Recursive Residual Network)超分辨网络-详细分析

    Contents 1 Introduction References 1 Introduction 这篇文章可以在一定程度上看做是DRCN的改良版 保留了DRCN的全局跳层连接和循环块提升网络深度但限制参数量的思想 增加了ResNet的局部
  • WiFi的Channel是个啥玩意

    今天下载了一个监控周围WiFi状态的app WiFi Explorer 打开app首页 如下图 其中有一栏名为Channel 看了下自己所用WiFi的Channel为1 是里面数值最低的 这是不是就代表通道很少 所以很卡呢 查阅资料后发现这
  • Unity用相机实现的镜子效果

    首先登场 场景中的元素 mirror是镜子 挂着我们的脚本 Quad是一个面片 Camera是用来生成RenderTexture给面片的 里面的test1是我用来调试位置的球 镜子size是大小 x是 2 为了反转一下贴图 相机直接可以禁用
  • centos7桥接模式,ip突然消失,ping不通电脑

    方法一 百度了很多方法都不行 然后尝试将路由器重启 得以解决
  • Unity URP 渲染管线着色器编程 104 之 镜头光晕(lensflare)的实现

    在SRP管线中是不支持Unity原有的LensFlare配置的 也就是说如果在URP或者HDRP管线下要使用Lens Flare 需要自己实现改功能 本节介绍一个HDRP的官方DEMO工程 FontainebleauDemo 中使用到的Le
  • Vue使用ElementUI的el-dropdown点击事件问题

    Vue使用ElementUI的el dropdown点击事件问题 el dropdown介绍 问题重述 问题解决 后续 el dropdown介绍 el dropdown是ElementUI提供的响应式的实现下拉菜单的功能组件 详细用法可见
  • 【牛客·字节】ZJ2 编程题1 球队比赛是否能打平

    描述 有三只球队 每只球队编号分别为球队1 球队2 球队3 这三只球队一共需要进行 n 场比赛 现在已经踢完了k场比赛 每场比赛不能打平 踢赢一场比赛得一分 输了不得分不减分 已知球队1和球队2的比分相差d1分 球队2和球队3的比分相差d2
  • 探索高级UI、源码解析与性能优化,了解开源框架及Flutter,助力Java和Kotlin筑基,揭秘NDK的魅力!

    课程链接 链接 https pan baidu com s 13cR0Ip6lzgFoz0rcmgYGZA pwd y7hp 提取码 y7hp 复制这段内容后打开百度网盘手机App 操作更方便哦 来自百度网盘超级会员v4的分享 课程介绍 0
  • 如何将父盒子分成三份

    floor list image float left width 33 33 margin top 5px 第二句的意思就是将父盒子均分成三份 这里面不能用flex 因为那样是将子元素全部变为一排 其样式会发生改变
  • 通过HttpUrlConnect调用Https asmx soap接口(绕过证书)

    import org springframework http HttpStatus import javax net ssl import java io IOException import java io InputStream im