Powerbuilder调用Webservice客户端总是有很多问题。proxy方法使用起来有很多限制,对后台Webservice服务脚本有很多要求,对复杂数据类型支持不好。INET方法使用时,对于PB9以下版本存在字符集的问题。PB9使用的是ANSI单字节字符集,而soap XML使用的UTF8字符集,当参数或返回值有汉字时,必须使用转码操作才能正常显示,再加上PB对webservice支持并不好,所以使用INET效率不高。本人认为使用MSXML2.XMLHTTP对象能够有效解决Webservice后台服务开发工具不同导致客户端使用不便的问题。网上有许多XMLHTTP开发经验,但源码使用均有不少BUG。本人在开发过程中实际操作使用,源码未经修改。由于使用XMLHTTP对象涉及SOAP协议文本封装问题,一般人员很难正确组装,因此借用SoapUI工具,可以快速查看有效SOAP封装后的语句,复制黏贴到程序中稍加修改即可使用。
SOAPUI截图
然后将运行左侧内容贴出,在程序中直接使用,PB中的代码如下:
//使用微软的MSXML控件开发,采用http/soap协议
oleobject ole_http
string ls_url
string ls_args
string ls_result
long li_