pb调用webserver的方法错误 ERROR calling method of a PBNI Object

fdzxm 2012-02-24 01:47:33
PB98836调用别人的webservice接口,在测试他们的方法,有些通过,有些PB直接报错,“ERROR calling method of a PBNI Object”这句话,想问下怎么回事了?不懂PBNI是什么,我就是按照对方给的方法给参数啊,有些在报错,有些又对的,搞了很久了,希望大大们帮忙看看.
long rVal, lLog
long amount
conn = create SoapConnection; //Instantiated connection
lLog = conn.SetOptions("xinnonhe.log");
// Set trace file to record soap interchange data,
// if string is "", disables the feature
rVal = Conn.CreateInstance(proxy_obj,"fservicesoutpaysoap");

if rVal <> 0 then
messagebox("连接失败","错误代码"+string(rVal))
return
end if;
// Create proxy object

try
amount = proxy_obj.getversion() //调用获取返回值
messagebox("返回信息",string(amount))
catch(soapexception e1) //soapexception定义的异常
messagebox("sop异常",e1.text)
catch (runtimeerror re1) //
Messagebox("web连接错误",re1.text)
end try
destroy conn

这个可以正确的获取到





//////////////
////出院通知
//////////////
boolean is_ok;
long rVal, lLog

conn = create SoapConnection; //Instantiated connection
lLog = conn.SetOptions("");
rVal = Conn.CreateInstance(proxy_obj,"fservicesoutpaysoap");

if rVal <> 0 then
messagebox("连接失败","错误代码"+string(rVal))
return
end if;

try
is_ok = proxy_obj.outhospital( 1, "a7ffd874-d2e3-4700-9d65-e4ebf3abb0da", "80482e6dbebf40298e15c312ca1c265d","111", datetime(date("2010-8-1"),time("09:09:34")), "牙出血", "康复")
if is_ok = true then
messagebox("","出院成功")
else
messagebox("","出院失败")
end if
catch(soapexception e1) //soapexception定义的异常
messagebox("sop异常",e1.text)
catch (runtimeerror re1) //
Messagebox("web连接错误",re1.text)
end try
destroy conn


这个就不行了 直接报错ERROR calling method of a PBNI Object”
...全文
2279 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fdzxm 的回复:]
听说只能升级到pb11以后的版本才能解决问题了,不知道是否真的是这样了
请教高手了
[/Quote]

如果11能解决这个问题,升级就是了

建议把后面的那些参数都定义成变量,然后再试试,如果不行,换个方式用MicrosoftSoap试试

ws = Create oleobject
i = ws.ConnectToNewObject("MSSOAP.SoapClient30")
if i <> 0 then
destroy ws
messagebox('提示 ','请检查是否安装了SoapSDK3.0和XML4.0', exclamation!)
return
end if

ws.ClientProperty("ServerHTTPRequest",true)

ls_wsdl = profilestring("soap.ini", "soap", "url", "")
ws.mssoapinit(ls_wsdl)

ws.ConnectorProperty("Timeout",180000)

st_dbhandle.text = ws.of_adder()


请参考

http://hi.baidu.com/doufulo/blog/item/c7b132b725666be430add16d.html
fdzxm 2012-02-27
  • 打赏
  • 举报
回复
怎么转换呢?
ych12333 2012-02-27
  • 打赏
  • 举报
回复
11好像也没有这个数据类型。转换一下试试看。
fdzxm 2012-02-27
  • 打赏
  • 举报
回复
感谢大家的热心提议和帮助,问题已经得到解决!
1、pb9也支持guid数据类型的,只是必须把补丁打上,我目前补丁是8784.
补丁很早以前就补上了,但是构建开发环境时候是把08年以前开发环境直接拷贝过来的,所以pbsoapclient90.pbd是个低版本的文件,乌龙得很。
2、升级到pb11.5肯定没有问题了,11.5对webserver支持要好很多,比如对xml解释,在pb9提示无法
解释,而在11.5能正常解释出来。

所以由于低版本pb9不支持guid类型而引起的错误解决的办法有
1、给pb9打补丁
2、升级到pb11.5

希望我的经历对遇到同样问题人有帮助。
谢谢大家。
fdzxm 2012-02-27
  • 打赏
  • 举报
回复
听说只能升级到pb11以后的版本才能解决问题了,不知道是否真的是这样了
请教高手了
fdzxm 2012-02-24
  • 打赏
  • 举报
回复
目前已经初步确定是解释文档提供方法中有guid数据类型,使用pb的SoapConnection直接解释出来的类型是string类型(pb不支持guid数据类型),所以出错!还未找到具体的解决办法。。。。。。
glint 2012-02-24
  • 打赏
  • 举报
回复
那就别用SoapConnection,直接通过Inet object获得xml文档自己解析

663

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder Web 应用
社区管理员
  • Web 应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧