DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 0
在线用户: 5
导航: 论坛 -> Web应用开发 斑竹:bodies  
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
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。
----------------------------------------------
-
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2019/12/20 16:04:32
1楼: 上述自动生成的文件后未做任何代码修改。
----------------------------------------------
-
作者:
男 joman (joman) ▲▲▲▲▲ -
普通会员
2019/12/20 20:50:04
2楼: 如果可以返回json格式 可以用webmvc开发很简单
----------------------------------------------
DelphiWeb开发方案(开源):https://gitee.com/pearroom/DelphiWebMVC
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2019/12/27 18:07:52
3楼: 做了个测试,发现问题了。
我用D2007同样的向导操作是没问题的,能正常编译。并且相关的接口也能正常调用。
但回到DXE10.3.3就还是不行,有很多数据类型无法识别。无法正常编译。
之前也尝试过加入
....\Embarcadero\Studio\20.0\source\soap的引用。但没效果。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/12/28 20:27:19
4楼: 你的 WebService 的服务器端是自己写的,还是别人的?
----------------------------------------------
-
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2019/12/30 9:08:38
5楼: 回楼上,是别人的。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/12/30 9:35:15
6楼: 你用 2007 导入的产生的代码,在 10.3.3. 底下能不能编译通过
----------------------------------------------
-
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
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里面加了很多东西。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/12/30 17:17:11
8楼: 印用单元名不同,是 delphi 把一些相关的类型声明或者相关的函数、类定义重新组织了一下,放到了不同地方。如果改了印用声明,原本的代码的编译通过,运行也正常,说明 DELPHI 的 WebService 框架没改。

个人感觉,WebService 的实现也不会改了。精力都用到最新的 DataSnap 去了。
----------------------------------------------
-
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2019/12/31 11:08:31
9楼: 主要还是数据类型变了。我搜了下,国外有些论坛的贴子也在反映base64Binary=type TArray<System.Byte>;相同的问题。他们的解决方式是更换数据类型。
----------------------------------------------
-
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2019/12/31 11:10:51
10楼: 感觉算是开发工具的BUG吧。谁能反映下。
像我这种不会很精通又没有太多开发时间的菜鸟来说不大会去深度研究改数据类型的。
----------------------------------------------
-
作者:
男 zhangpuqing (pupu) ★☆☆☆☆ -
普通会员
2020/1/1 9:28:13
11楼: 又尝试了引用其它的一些wsdl单元。没有上述问题的发生,看来跟接口的内容有关呀。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2020/1/1 19:22:53
12楼: 数据类型的变动也是有可能的。主要是 UNICODE 导致的变动。比如以前单字节的 string 可能就变成了 TBytes。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行69.82422毫秒 RSS