Powerbuilder调用Webservice的两种方法

文档转自:Powerbuilder调用Webservice的两种方法-蒲公英云

提起Powerbuiler这个工具来,现在还能知道的人还真不多。先简单解释一下吧,以下是从百度百科上复制下来的一段文字

PowerBuilder美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于Windows3.x、Windows95和WindowsNT的一个集成化开发工具。它包含一个直观的图形界面和可扩展的面向对象的编程语言PowerScript,提供与当前流行的大型数据库的接口,并通过ODBC与单机数据库相连。

当然了这也已经老黄历了,从当年的人见人爱(当然了也没那么夸张),到现在的卖艺又卖身(Sybase卖身给了SAP,现在SAP又把Powerbuiilder给了正阳—APPEON).这玩意儿现在也就还剩下医疗行业这一块根据地了,没办法现在流行BS应用,而这恰恰是Powerbuilder的短板。

好了啰嗦了这么多,下面开始进入正题。本人是混医疗圈的,对于一家医院来说要上系统的话,什么his lis pacs ris等等,就是产品线再全的公司有时候也一定能一家就搞定所有系统,所以总会遇到多个系统之间进行数据交互的时候,按照现在的行情,首选自然是Webservice。以下就是Powerbuilder调用其他系统接口常用的两种方法。

方法一(这也是Powerbuilder推荐的方法)

1.在Powerbuilder上点击File->New->Project->Web Service Proxy Wizard

u_1679265622_291546509_fm_173_s_66F118D05D5E65C85E54CF4A0300D0F7_w_539_h_389_img.JPEG

2.如下图所示,填上Webservice的地址点Next

3.下图直接点Next

u_110529692_3569247337_fm_173_s_0584DC101766470B5EE9BD5A030080B1_w_514_h_333_img.JPEG

4.同样,下图继续Next

5.下图红框圈起来的地方填上前缀(不填也行)

u_1088180122_4036750701_fm_173_s_4D80CC101F37458AC46821DA030080B2_w_514_h_333_img.JPEG

6.下图直接Next

u_504374586_3284474242_fm_173_s_0D84DC105676478ADAE9BD5E030080B1_w_514_h_333_img.JPEG

7.选择保存代理的pbl

u_354254057_3266285970_fm_173_s_4D00CC105574478A86CD35DA000080B2_w_514_h_333_img.JPEG

8.下图是上面所做选择的最终结果,需要修改的话直接Back回去修改,否则还是直接Next

u_52180888_3394645193_fm_173_s_0584DC103D0650CE1EE83D52030080B0_w_514_h_333_img.JPEG

9.上面结束以后,菜单Design->Deploy Project,然后将Webservice的方法生成到本地(红框中圈起来的部分)

u_259061392_3015818342_fm_173_s_6440D812573A402816E5945A030080F1_w_640_h_317_img.JPEG

10.下图是调用Webservice的结果(以http://www.webxml.com.cn上查询手机号归属地的Webservice为例)

u_4237170048_2389969468_fm_173_s_04F36C321D4A74495EE1D94E0200F0F1_w_459_h_293_img.JPEG

11.以下是具体的实现代码

String ls_phone,retmsg,ls_area

testmobilecodewssoap webTest

String ls_webTest = ‘testmobilecodewssoap’

String ls_url = ‘http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl‘

soapconnection conn

conn = Create soapconnection

ls_phone = Trim(sle_1.Text)//手机号

Try

conn.CreateInstance(webTest,ls_webTest,ls_url)

Catch(soapexception re1)

retmsg = “调用失败1,错误号码:” + re1.getmessage()

Catch(runtimeerror re2)

retmsg = “调用失败2,错误号码:” + re2.getmessage()

End Try

MessageBox(“提示”,retmsg)

Return

ls_area = webTest.getmobilecodeinfo(ls_phone,’’)

Catch(runtimeerror re3)

retmsg = “调用失败3,错误号码:” + re3.getmessage()

Destroy(conn)

mle_1.Text = ls_area

u_4004918080_3061603568_fm_173_s_46C19A54173A652C1878A25A020090F6_w_640_h_316_img.JPEG

方法二:

上面的方法一是使用Powerbuilder推荐的生成代理的方式来调用。但对于这么一个”历史悠久”的工具来说,由于历史原因不是每家都是用的是最新的版本。首先来说上面的方法是从9.0开始支持的,从10以后开始逐渐加强(截止到现在最新版本是12.6).9.0对Webservice的支持并不怎么好,而恰恰目前用的比较多的就是9.0这个版本。在与其他系统交互数据时如果使用方法一的话基本上就得拼人品碰运气了。呵呵,所以下面介绍另外一种方法

首先使用第三方工具抓取Webservice的格式(本例使用soapUI来抓取)

1.菜单File->New soapUI Project,输入Webservice

u_2758790858_649634685_fm_173_s_7050C033963E458806503CD90300A0B2_w_640_h_317_img.JPEG

2.下图就是抓取的结果

数据格式如下:问号就是要输入的参数

?

?

u_2132771771_4231348575_fm_173_s_4450E53B1D3F64091C5CD4DA000010B3_w_640_h_317_img.JPEG

2.下图就是实现方法(代码如下)

string ls_xml,result,ls_phone,as_approve=’’

Long ll_length,li_create,li_return

ls_phone = trim(sle_1.text)

ls_xml= ‘’

ls_xml+=’’

‘+ls_phone+’

ls_xml+=’’

OLEObject http

http = Create OLEObject

li_create = http.ConnectToNewObject( “Msxml2.XMLHTTP.6.0”)

If li_create <> 0 Then

li_create = http.ConnectToNewObject( “Msxml2.XMLHTTP.3.0”)

End If

ll_length = Len(ls_xml)

http.Open(“POST”,ls_url,True)

http.setRequestHeader(“Content-Type”,”text/xml;charset=UTF-8”)

http.setRequestHeader(“Content-Length”,String(ll_length))

http.setRequestHeader(“Authorization”,”auth=”+as_approve)

http.Send(ls_xml)

Do While http.readyState <> 4 //查询状态,延时

Yield()

Loop

result = http.responseText

http.DisconnectObject()

Destroy http

mle_1.Text = Mid(result,Pos(result,’’)+25,Pos(result,’’) - Pos(result,’’) - 25)

u_644311345_3641828615_fm_173_s_E6C19854178A616C10FDA25A020010F7_w_640_h_316_img.JPEG

u_3459021328_890485699_fm_173_s_66C19A54171B616C4E71825A020080F6_w_640_h_316_img.JPEG

u_2660318160_1037892701_fm_173_s_04F26C321D4A74495EF9D94E0200E0F1_w_459_h_293_img.JPEG

以上就是Powerbuilder调用Webservice的两种方法,其实还有其他方法,这里就不再写了。如果您使用的是10以上版本,推荐使用方法一,如果是10以下的话,还是用方法二吧。

最后顺带提一句,对于使用.Net的人来说很喜欢使用WCF来搞这个,但是WCF搞出来的东西虽然很像Webservice,但还是有区别的,而且使用上面两种方法也是都调用不成功的,要想解决,可以使用微软的SoapToolkit来处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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功能使得应用程序之间的通信和数据交互变得更加简单和高效。它提供了一种方便的方式来实现不同应用程序之间的数据交换和服务调用

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值