PowerBuilder6.5 调用WebService

      近期和别的公司做接口,对方是 WebService ,这样我们需要在 owerBuilder6.5 中进行调用。在 Google 等上找了找,发觉都是采用 MSSOAP.SoapClient 或者 MSXML.XMLHTTP 进行,在具体测试后发觉不是很理想,于是想是否可以直接使用

PB6 本地的 GetURL 功能进行呢?于是有了下面的方案:

      首先从 internetresult 继承对象 n_ir_wsclient ,并定义实例变量 dataResult 用于保存 GetURL 的返回结果。这样就可以进行 WebService 调用了

Inet                lnv_inet

n_ir_wsclient          lnv_wsclient

Integer               li_return

String               ls_url,ls_data

 

lnv_inet       = Create Inet

lnv_wsclient   =   Create n_ir_wsclient

 

ls_url = “http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=1380571&userID=”

 

li_return = lnv_inet.GetURL(ls_url, lnv_wsclient)

 

ls_data = String(lnv_wsclient.dataResult)

 

Destroy lnv_wsclient

Destroy lnv_inet

         这个时候返回结果为 :

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://WebXml.com.cn/">1380571 锛氭禉姹 ? 窞 娴欐睙绉诲姩閲戝崱绁炲窞琛屽崱 </string>

         麻烦了,返回结果是 UTF-8 格式,可是 PB65 不支持直接转化,怎么办呢?最后想想还是辅助了一个 dll 吧,于是 COnvCode.dll 出炉了。  

Function Integer UTF8ToAnsii(String szUTF8,Ref String szAnsiiRslt) Library "ConvCode.dll" Alias For "_UTF8ToAnsii@8"

Function Integer AnsiiToUTF8(String szAnsii, Ref String szUTF8Rslt) Library "ConvCode.dll" Alias For "_AnsiiToUTF8@8"

   最后完整的调用函数也出来了

Inet                           lnv_inet

n_ir_wsclient   lnv_wsclient

Integer                       li_return

String                          ls_url,ls_data,ls_result

Long                        ll_length

 

 

ls_url = arg_url

// 1.URL UTF-8 格式

SetNull(ls_result)

ll_length = AnsiiToUTF8(ls_url,Ref ls_result)

ls_result = Space(ll_length)

ll_length = AnsiiToUTF8(ls_url,Ref ls_result)

If ll_length < 0 Then

         LastError = -100

         Return ""

End If

ls_url = ls_result

 

// 2 、执行 WebService

lnv_inet     = Create Inet

lnv_wsclient = Create n_ir_wsclient

 

li_return = lnv_inet.GetURL(arg_url, lnv_wsclient)

 

ls_data = String(lnv_wsclient.dataResult)

 

Destroy lnv_wsclient

Destroy lnv_inet

 

If li_return < 0 Then

         LastError  = li_return

         Return ""

End If

 

 

// 3 、处理返回结果, UTF-8 ANSII

SetNull(ls_result)

ll_length = UTF8ToAnsii(ls_data,Ref ls_result)

 

ls_result = Space(ll_length)

ll_length = UTF8ToAnsii(ls_data,Ref ls_result)

If ll_length < 0 Then

         LastError = -100

         ls_result = ""

End If

 

// 4 、返回

Return ls_result

         这样处理后返回的结果就是 PB65 可以认识的字符串了,前面例子的返回结果如下:

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://WebXml.com.cn/">1380571 :浙江 杭州 浙江移动金卡神州行卡 </string>

 

附:

ConvCode.dll 的核心源代码如下:

INT WINAPI __declspec( dllexport) UTF8ToAnsii( LPCSTR szUTF8, LPSTR szAnsiRslt)
{
        INT nResult = 0 ;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
PowerBuilder 12是一种用于开发Windows应用程序的集成开发环境(IDE)。它具备强大的程序逻辑、数据访问和用户界面设计功能。而在PowerBuilder 12中,我们还可以使用WebService来实现应用程序之间的通信和数据交互。 WebService是一种基于Web标准的技术,它使用HTTP协议进行通信,并且数据以XML格式传输。PowerBuilder 12内建了对WebService的支持,可以轻松地用于创建和调用WebService。 在PowerBuilder 12中,我们可以使用WSdl(WebService描述语言)文件来定义WebService的接口和方法。我们可以通过WSdl创建客户端代理对象来调用远程的WebServicePowerBuilder提供了一系列内建函数来实现与WebService的交互,例如createService和invokeMethod等。 使用PowerBuilder 12创建和调用WebService非常简单。首先,我们需要在PowerBuilder中引用并导入WebService的WSdl文件。然后可以使用createService函数创建WebService客户端代理对象,根据WSdl定义的接口和方法来调用WebService中的服务。调用完毕后,我们可以通过invokeMethod函数获取WebService返回的结果。 使用PowerBuilder 12的WebService功能,我们可以实现应用程序之间的数据交换和服务调用。例如,我们可以通过调用远程WebService获取和更新远程数据库的数据,或者将本地应用程序的数据传输给其他应用程序。 总之,PowerBuilder 12的WebService功能使得应用程序之间的通信和数据交互变得更加简单和高效。它提供了一种方便的方式来实现不同应用程序之间的数据交换和服务调用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值