V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Renco
V2EX  ›  Java

WebService 客户端要怎么调用,(涉及复杂对象)

  •  
  •   Renco · 2020-10-16 15:27:35 +08:00 · 2000 次点击
    这是一个创建于 1502 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近一个需求需要调用外部的 webservice 系统,系统内部之前有过 webservice 调用的 demo,用的是 axis 的调用方式,但是是适用于,请求对象和接受对象均为简单类型(如 String 的场景)。

    目前新需求提供的接口是 请求对象和返回对象都为 JavaBean 的格式,采用 axis 调用方式需要序列化,通过 axis 的一个方法注册,但是似乎需要服务端那边做配置?

    带有复杂类型参数的 没学过 webservice,客户端用什么方式调。没学过 webservice 相关的知识,需求比较紧急,帮帮孩子。

    8 条回复    2020-10-16 23:39:58 +08:00
    kop1989
        1
    kop1989  
       2020-10-16 15:38:35 +08:00
    我给 lz 翻译翻译:
    lz 之前用的是一个 JAVA 生态下的名叫 axis 的 webService 框架,这个框架在 06 年停止的维护。
    之前只用来传单一的类型数据。比如 int 、long 、String (这个其实也算是对象,但就不发散了)
    现在需要传一个包含多个字段的业务对象。不知道该如何传递。

    我的解答:
    最简单的方式是原接口传递 string 不变,将 object 序列化为 JSON 字符串,接收方把 JSON 字符串反序列化为对象。(前提是双方都要有此对象类声明。)
    Jrue0011
        2
    Jrue0011  
       2020-10-16 16:44:58 +08:00
    webservice 我也不太了解,你想问的可能是怎么把 java bean 序列化成 soap 格式的 xml 报文,以及怎么从这种 xml 报文中反序列化获得 java bean ?
    Renco
        3
    Renco  
    OP
       2020-10-16 16:47:55 +08:00
    @Jrue0011 对的
    Renco
        4
    Renco  
    OP
       2020-10-16 16:48:12 +08:00
    @kop1989 感谢翻译,我描述的有点乱
    Asuka0947
        5
    Asuka0947  
       2020-10-16 16:50:05 +08:00
    gson string to Object.class 我是这么做的
    mamumu
        6
    mamumu  
       2020-10-16 16:52:08 +08:00
    直接用 idea(需要安装个插件 soapui)或者 eclipse 里边有工具直接根据 wsdl 生成客户端代码,如果参数是对象的话会自动生成的
    Renco
        7
    Renco  
    OP
       2020-10-16 17:00:04 +08:00
    明白了,java11 好像没有 webServcie 相关的包,生成的代码注释会报错。。换成 JDK8 就可以
    wc951
        8
    wc951  
       2020-10-16 23:39:58 +08:00
    不管是 axis1 还是 2 都可以生成 javabean 的,实在不会用 cxf 也行,只要有 wsdl 就能生成调用客户端
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1418 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:35 · PVG 01:35 · LAX 09:35 · JFK 12:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.