pb9调用WebServie有很多麻烦,方法名称有前缀啦,数据类型不匹配啦等等,最恼火的就是调用方法传入参数始终提示为“Null”。百思不得其解,有一天在论坛上看到一个网友的分析,试着自己解决一下,没想到成功了。就是不知道为什么会这样,下面来介绍解决问题的方法。
第一步:导出生成的webservice不可视对象,保存为*.srx;
第二步:用记事本打开这个*.srx,然后在里面找到申明方法的部分格式一般是“function 返回类型 方法名称 (参数列表)”,例如:function any cliDetailSeek (string clinicNo) alias for "cliDetailSeek([in] s:string clinicNo) return s5:clinicDetailResult[ElementName=s5:list] return@http://xxx.xxxx.xxx/@cliDetailSeek*cliDetailSeek*http://xxx.xxxx.xxx"
第三步:逐个删掉"*方法名称*webservice地址"不包括双引号,例如上面的方法申明就删掉“*cliDetailSeek*http://xxx.xxxx.xxx”,变成“function any cliDetailSeek (string clinicNo) alias for "cliDetailSeek([in] s:string clinicNo) return s5:clinicDetailResult[ElementName=s5:list] return@http://xxx.xxxx.xxx/@cliDetailSeek”;注意双引号是必须的,每个方法后边都要删除,然后保存。
第四步:倒入修改后的*.srx,然后regenerate一下,就可以正常调用了。
PB10之后的版本生成webserveice就能直接使用,建议升级pb版本一劳永逸。