PB调用WebService遇到的问题

本文介绍了使用PowerBuilder(PB)调用WebService时遇到的问题及解决方法。问题表现为传入WebService的参数始终为null,最终发现原因是结构体数组中某个字段被赋值为null导致整个结构体变为null。

PB调用WebService遇到的问题

      今天用PB调用WebService时,遇到了十分不解的问题,我WebService中的方法都使用单元测试验证过的,但用PB调用时,方法中的参数上传到WebService始终是null。(报的异常:System.NullReferenceException: Object reference not set to an instance of an object)我调用WebService的代码为:

if dw_1.rowcount() = 0 then  return 
cashcarteinfo cartelist[]

cartelist 
=dw_1.object.data

cashcarteiteminfo carteitemlist[]

datastore ldst_carteitem
ldst_carteitem
= create datastore
ldst_carteitem.dataobject 
= 'd_carteitem'
ldst_carteitem.settransobject( sqlca)
ldst_carteitem.retrieve( idt_uptime)

carteitemlist 
= ldst_carteitem.object.data
destroy ldst_carteitem

SoapConnection  conn   
cashservice cashweb 


 
long  rVal 
 conn  
=  create  SoapConnection     
 rVal  
=  Conn.CreateInstance(cashweb,  "cashservice","http://localhost/WebService/Service.asmx"
try
    
string ls = space(500)
    
long stationid 
    stationid 
= 1
    
if cashweb.uploadcarte( cartelist, carteitemlist, stationid, ref ls) =true then
        Messagebox(
'','succes')
    
else
        Messagebox(
'fail',ls)
    end 
if
    
catch( SoapException e )
    messagebox (
"Error""Cannot invoke Web service~r~n"+ e.getmessage( ) )   // error handling  
end try
destroy cashweb
destroy conn

经过过反复的调试,终于发现问题所在。我上传的参数是一个结构体数组,在给结构体赋值时,如果结构体的某一字段赋了null,上传到WebService后,整个对象(结构体)都会为null。找到了原因,问题迎刃而解!

另附PB调用WebService调试的方法:

       将Vs.Net 的WebService启动调试,让它处于调试状态,并设好WebService的断点;再调试PB程序,只要PB调用的WebService方法在Vs.Net 中有断点,就会自动进入Vs.Net 的环境中查看参数的传递情况。

 

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值