码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 总结:企业开发中,如何利用webService获取第三方公司传递过来的数据。


    总结:企业开发中,如何利用webService获取第三方公司传递过来的数据。

    • 第一步:利用第三方公司提供的wsdl接口地址,生成对应的Java代码(有多种方式可以实现,例如:AXIS,CXF等)
      • (1)生成Java代码结果如图所示:你实际生成的Java代码肯定与我不一样,除非wsdl接口一样才行。但是肯定类似。
      • (2)生成的Java代码基本解析
    • 第二步:利用生成的Java代码方法封装请求,然后发起请求获取最终数据的示例代码如下所示。
      • (1)示例代码
      • (2)相关代码作用的解释
      • (3)利用本地存根类stub,封装请求结果封装的数据类型(即,响应数据应该映射的实体类)
      • (4)响应类里面该调用哪个方法获取数据,举例如图所示。
    • 第三步:测试结果,成功!

    第一步:利用第三方公司提供的wsdl接口地址,生成对应的Java代码(有多种方式可以实现,例如:AXIS,CXF等)

    (1)生成Java代码结果如图所示:你实际生成的Java代码肯定与我不一样,除非wsdl接口一样才行。但是肯定类似。

    在这里插入图片描述

    (2)生成的Java代码基本解析

    在这里插入图片描述

    注意:(1)该如何利用wsdl生成Java代码,我这边由于已经无法连接客户vpn,因此无法演示。

    (2)IDEA如何解析wsdl文件为Java源代码,参考链接地址:https://blog.csdn.net/weixin_48033662/article/details/124029406?spm=1001.2014.3001.5501

    (3)不能利用response结尾类,直接调用里面获取数据的方法来获取数据。因为此时这个响应类里面的数据容器,还没有从请求中获取数据且封装在数据容器里面。

    (4)客户的wsdl文件地址,基本上都需要链接客户特定的vpn才可以成功访问,当然也存在不用vpn的就能访问的客户。

    第二步:利用生成的Java代码方法封装请求,然后发起请求获取最终数据的示例代码如下所示。

    (1)示例代码

    package test;
    
    import msdev.sync.yangzijiang.wsdl.department.*;
    import org.apache.axis.AxisFault;
    
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.rmi.RemoteException;
    
    /**
     * 运行程序之前,需要先连接客户的vpn,才能成功访问
     */
    public class Hello {
        public static void main(String[] args) {
            //获取部门信息
            try {
                /**
                 * 注意:(1)这个url不是wsdl文件地址,而是从生成的Java代码中某个以Locator结尾的类里面的 HTTP_Port_address的属性值,
                 * (2)如果客户的wsdl文件地址是http开头,那么url尽量也使用http协议,若是https,亦是如此
                 */
                //方式一:自己去以Locator结尾的类里面,找到url然后复制粘贴过来
    //            URL url = new URL("http://127.0.0.1:8080/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_SRM_QAS&receiverParty=&receiverService=&interface=SI_ORG&interfaceNamespace=http%3A%2F%2Fyangzijiang.com%2FSRM%2Forg");
                //方式二:通过get方法获取出来
    //            URL url = new URL(new SI_ORGServiceLocator().getHTTP_PortAddress());
    
                //这行代码固定形式,new一个Stub结尾的类,传入url,以及Locator结尾类的实例作为参数
                SI_ORGBindingStub stub = new SI_ORGBindingStub(new URL(new SI_ORGServiceLocator().getHTTP_PortAddress()), new SI_ORGServiceLocator());
                //传入客户url请求地址的账号密码,没有账号密码,也可以不填写
                stub.setUsername("账号");
                stub.setPassword("密码");
                //调用stub中的某个获取数据的方法(这个方法一般会大写而且与众不同,无法见名知意),需要传入参数,具体参数是什么可以去看构造方法
                //传入的ZPO_ORG类,就相当于获取客户数据接口传入的参数,具体开发文档里面会规定。
                //如果要求传入参数,就必须得new一个有参构造对象,没有要求传入参数,就是直接new一个无参构造对象
                ZPO_ORGResponse zpo_orgResponse = stub.SI_ORG(new ZPO_ORG());
                //一般都会返回一个数据数组,直接get获取就行
                ZSPO_ORG[] lt_org = zpo_orgResponse.getLT_ORG();
                //遍历打印
                for (ZSPO_ORG zspo_org : lt_org) {
    //                System.out.println(zspo_org.getZFB());
                    System.out.println("getZFB:" + zspo_org.getZFB());
    //                break;
                }
            } catch (AxisFault axisFault) {
                axisFault.printStackTrace();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    注意:仔细阅读代码里面的注释,这样你才能完全理解。
    
    • 1

    (2)相关代码作用的解释

    在这里插入图片描述
    在这里插入图片描述

    (3)利用本地存根类stub,封装请求结果封装的数据类型(即,响应数据应该映射的实体类)

    在这里插入图片描述
    注意:方法的参数就直接根据方法的参数类型,去new就行了(其他地方也是类似如此传参)。具体可以参考注释

    (4)响应类里面该调用哪个方法获取数据,举例如图所示。

    在这里插入图片描述
    注意:此时通过response响应类,调用获取数据接口的方法,才能正确成功的获取第三方公司发送过来的数据。

    第三步:测试结果,成功!

    由于客户vpn我已经无法连接,因此也无法获取对应数据了,因此无法展示!!!

  • 相关阅读:
    Java的Map中put,compute,computeIfAbsent,putIfAbsent与的区别
    C# Expression学习笔记(一、表达式与表达式树的基本结构)
    宿主机无法连接docker里的redis问题解决(生产环境慎用)
    Elastic Search 环境搭建
    BP神经网络算法基本原理,bp神经网络算法的原理
    计算机毕业设计Java大学生学习时间规划平台小程序(源码+系统+mysql数据库+lw文档)
    三菱PLC若想实现以太网无线通讯,需要具备哪些条件?
    Kafka 为什么这么快,性能如此优良
    Linux 调试之strace
    Win11找不到gpedit.msc怎么办?Win11无法打开gpedit.msc解决教程
  • 原文地址:https://blog.csdn.net/weixin_48033662/article/details/125468189
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号