导航:
论坛 -> Web应用开发
斑竹:bodies
作者:
2019/12/20 16:03:23
标题:
使用delphi对webservice的调用问题
浏览:1792
加入我的收藏
楼主:
近期在搞接口的事,以前没接触过,按网上贴子的做法新建一个application后新建了个wsdl importer。通过向导,输入地址后生成了个单元文件。单元里面有接口文档里指定的函数等,感觉这步是的成功的。 但编译运行时报错“[dcc32 error]ftrendws.pas(82):e2574 instantiated type can not be used for type'd type declaration”. 然后会定位到‘ base64Binary = type TArray<System.Byte>; { "http://webservice.ftrend.cn" ;[GblElm] }’这个代码位置。 很奇怪。不知道是哪儿出了问题。 也有引用system.types。
----------------------------------------------
-
作者:
2019/12/20 16:04:32
1楼:
上述自动生成的文件后未做任何代码修改。
----------------------------------------------
-
作者:
joman (joman)
▲▲▲▲▲
-
普通会员
2019/12/20 20:50:04
2楼:
如果可以返回json格式 可以用webmvc开发很简单
----------------------------------------------
DelphiWeb开发方案(开源):https://gitee.com/pearroom/DelphiWebMVC
作者:
2019/12/27 18:07:52
3楼:
做了个测试,发现问题了。 我用D2007同样的向导操作是没问题的,能正常编译。并且相关的接口也能正常调用。 但回到DXE10.3.3就还是不行,有很多数据类型无法识别。无法正常编译。 之前也尝试过加入 ....\Embarcadero\Studio\20.0\source\soap的引用。但没效果。
----------------------------------------------
-
作者:
2019/12/28 20:27:19
4楼:
你的 WebService 的服务器端是自己写的,还是别人的?
----------------------------------------------
-
作者:
2019/12/30 9:08:38
5楼:
回楼上,是别人的。
----------------------------------------------
-
作者:
2019/12/30 9:35:15
6楼:
你用 2007 导入的产生的代码,在 10.3.3. 底下能不能编译通过
----------------------------------------------
-
作者:
2019/12/30 10:44:51
7楼:
回楼上: 如果完全不做任何更改,是肯定不行的啥,2007版在引用单元里面,有涉及到invokeregistry,soaphttpclient,types,xsbuiltins; 而在XE10.3.3里,引用的是soap.invokeregistry,soap.soaphttpclient,system.types,soap.xsbuiltins; 好哥你牛了,我试了下,直接复制替换后编译成功。 比较了下,2个单元文件还是有区别的。除了引用单元不一样之处,特别在initialization部分有很大的区别。10.3.3里面加了很多东西。
----------------------------------------------
-
作者:
2019/12/30 17:17:11
8楼:
印用单元名不同,是 delphi 把一些相关的类型声明或者相关的函数、类定义重新组织了一下,放到了不同地方。如果改了印用声明,原本的代码的编译通过,运行也正常,说明 DELPHI 的 WebService 框架没改。 个人感觉,WebService 的实现也不会改了。精力都用到最新的 DataSnap 去了。
----------------------------------------------
-
作者:
2019/12/31 11:08:31
9楼:
主要还是数据类型变了。我搜了下,国外有些论坛的贴子也在反映base64Binary=type TArray<System.Byte>;相同的问题。他们的解决方式是更换数据类型。
----------------------------------------------
-
作者:
2019/12/31 11:10:51
10楼:
感觉算是开发工具的BUG吧。谁能反映下。 像我这种不会很精通又没有太多开发时间的菜鸟来说不大会去深度研究改数据类型的。
----------------------------------------------
-
作者:
2020/1/1 9:28:13
11楼:
又尝试了引用其它的一些wsdl单元。没有上述问题的发生,看来跟接口的内容有关呀。
----------------------------------------------
-
作者:
2020/1/1 19:22:53
12楼:
数据类型的变动也是有可能的。主要是 UNICODE 导致的变动。比如以前单字节的 string 可能就变成了 TBytes。
----------------------------------------------
-