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

2020-10-16 15:27:35 +08:00
 Renco

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

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

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

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

我的解答:
最简单的方式是原接口传递 string 不变,将 object 序列化为 JSON 字符串,接收方把 JSON 字符串反序列化为对象。(前提是双方都要有此对象类声明。)
Jrue0011
2020-10-16 16:44:58 +08:00
webservice 我也不太了解,你想问的可能是怎么把 java bean 序列化成 soap 格式的 xml 报文,以及怎么从这种 xml 报文中反序列化获得 java bean ?
Renco
2020-10-16 16:47:55 +08:00
@Jrue0011 对的
Renco
2020-10-16 16:48:12 +08:00
@kop1989 感谢翻译,我描述的有点乱
Asuka0947
2020-10-16 16:50:05 +08:00
gson string to Object.class 我是这么做的
mamumu
2020-10-16 16:52:08 +08:00
直接用 idea(需要安装个插件 soapui)或者 eclipse 里边有工具直接根据 wsdl 生成客户端代码,如果参数是对象的话会自动生成的
Renco
2020-10-16 17:00:04 +08:00
明白了,java11 好像没有 webServcie 相关的包,生成的代码注释会报错。。换成 JDK8 就可以
wc951
2020-10-16 23:39:58 +08:00
不管是 axis1 还是 2 都可以生成 javabean 的,实在不会用 cxf 也行,只要有 wsdl 就能生成调用客户端

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/715651

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX