用Delphi 7编写程序访问AXIS提供的WebService都是正常的,其他语言的也是正常的
但是遇到Java上的JAX-WS提供的WebService就不行。
WebService里的函数生成了xsd文件,在Delphi 7里自动import wsdl时候,无法对应xsd文件,自动生成的接口函数居然无法编译通过!
需要用一个TRemotable类来对应函数的各个参数值,这样传过去。
后来又发现值虽然传过去了,但是Java控制台上看到是空的,也就是说通讯已经没问题了,但是传送的内容接口没对。
有人说:
JAVA不支持Delphi传递的ioDocument格式,需要把
InvRegistry.RegisterInvokeOptions(TypeInfo(SaveData), ioDocument);
改为:
InvRegistry.RegisterInvokeOptions(TypeInfo(SaveData), ioHasNamespace);
SaveData是WebService接口。
这个没试过。因为后面直接升级用XE8了,用了XE8,import了wsdl,一下子就对了,在函数的参数里多了很多对应的东西。
程序也正常存入数据到WebService了。
D7对JAX-WS编写的WebService的确不是很好,建议大家在遇到这种情况之下,直接升级到XE8,就正常了。