Pb调用Webservice

合集下载

pb调用Webservice步骤

pb调用Webservice步骤
st_waiting.visible = false
return
catch (PBXRuntimeError e15)
messagebox('调用方法','调用 函数出现 运行错误 错误!')
st_waiting.visible = false
return
catch (RUNtimeerror e16)
下面是我调用他们的下载疾病目录 过程
int mess
mess = messagebox('提示','确定要重新下载数据吗?',question!,yesno!,2)
if mess = 2 then return
st_waiting.visible = true
//////////////////////////
err = '创建实例失败,请检查代理对象是否正确,错误代码'
messagebox('',err)
st_waiting.visible = false
return
end if
//第二步 调用 Ws的方法 , 因为方法不一样,所有函数参数也不一样
string WebService_Return_Values
end if
// 第四部 把返回的值 通过 PBDOM , 转化成 XML 文件
PBDOM_BUILDER pbdom_bldr
PBDOM_Document pbdom_doc
PBDOM_Object pbdom_obj_array[]
PBDOM_Element pbdom_elem
destroy i_conn

PB11.5 WebService中使用的PBSoapClient115.PBD和PBWSClient115

PB11.5 WebService中使用的PBSoapClient115.PBD和PBWSClient115

PB11.5 WebService中使用的PBSoapClient115.PBD和PBWSClient115.时间:2011-05-12 18:17 来源:未知点击: 292次PB11.5 WebService中使用的PBSoapClient115.PBD和PBWSClient115.PBD的含义、差别和使用方法PB11.5 WebService中使用的PBSoapClient115.PBD和PBWSClient115.PBD的含义、差别和使用方法自PB10.5开始,PB中生成WebServie的向导中就多了一个选项:Use .NET Engine,对应这个选项,也多了两个文件PBWSClient105.PBD和PBWSClient105.PBX,这是怎么回事?为什么针对WebService,PB会搞两个方法?有不少客户和网友问到这相关的问题,我这里讲我的理解和研究和大家分享如下:(为了方便,就以PB11.5为例)1:PBSoapClient115是针对EasySoap标准的(Java),PBWSClient115是针对.NET标准的虽然WebService本应是一个通用的标准,但你会发现EasySoap标准和.NET标准的WebService 是有一些差别的,我观察到差别有这些:A>PB对EasySoap标准的WebService支持可能不完整,生成的WebService往往不会让人很满意,比如,结构体会无端的加上一个前缀,和你之前定义的不同。

B>PB对.NET的WebService生成Proxy时,WebService的路径不是一个WSDL文件,而是一个asmx文件,当然你也可以在asmx后加一个?wsdl来转换。

C>如果是在.NET WebForm或.NET WinForm中,你使用PBWSClient115.PBD是没法发布的,你需要用PBWSClient115.PBL(下文会讲如何生成这个文件)2:如何在.NET WebForm或.NET WinForm中使用PBWSClient115.PBL在PB11.5中,如果要在.NET WebForm或.NET WinForm调用WebService,你必须使用Use .NET Engine方式生成WebService(我猜测是因为PBWSClient115.PBX使用了.NET FrameWork2.0的缘故),而且Target的Library List中需要用PBWSClient115.PBL,下面是步骤:A>创建一个PBL文件,取名PBWSClient115.PBL,并加入到您的Target中B>在这个PBWSClient115.PBL上点右键,选择Import PB Extension...选择PBWSClient115.PBX 导入3、您可以用PBSoapClient115.PBD来调用.NET标准的WebService在PB11.5中,如果你不是要在.NET Target中调用.NET标准的WebService,你只要在生成WebService的Proxy时不选择Use .NET Engine,并且在asmx文件后面加一个?wsdl,就可以生成一个EasySoap标准的Proxy,这时你可以把PBSoapClient115.PBD包含到你的Library List中来调用这个WebService。

pb webservice调用例子

pb webservice调用例子

以下是一个使用PowerBuilder(PB)调用WebService的示例,字数超过1500字。

首先,确保你已经在PowerBuilder中创建了一个WebService方法,并将其发布为IIS 方式。

然后,按照以下步骤进行操作:创建PB的解决方案文件:在PowerBuilder中创建一个新的解决方案文件,并确保引用了一个pbwsclient11.pbd文件。

这个文件在安装路径中可以找到。

创建对象:从"工具箱"中拖动一个"WebServiceProxyWizard"图标到PowerBuilder的设计界面。

这将创建一个新的对象,用于调用WebService。

连接SOAP对象:在代码编辑器中,使用以下代码连接SOAP对象:ls_s1 = "abc"ls_s2 = "def"// 连接SOAP对象if ole_ws.ConnectToNewObject("MSSOAP.SoapClient30") < 0 thenif ole_ws.ConnectToNewObject("MSSOAP.SoapClient") < 0 thenthrow CreateRuntimeError(ls_error)end ifend if这段代码将尝试连接到两个不同的SOAP客户端对象。

如果连接失败,将抛出一个运行时错误。

初始化WebService地址:使用以下代码初始化WebService的地址:vbnetole_ws.mssoapinit(ls_address)其中,ls_address是WebService的WSDL文件路径。

调用方法:使用以下代码调用WebService方法:vbnetls_return = ole_ws.addstr(ls_s1, ls_s2)其中,addstr是WebService方法名,ls_s1和ls_s2是方法的参数。

PB调用各类WebService或c#程序

PB调用各类WebService或c#程序

PB调用各类WebService或c#程序慢慢的有很多接口pb都已经无法调用了,还有一些进制计算,位移等pb都无法实现,这时最简单的就是用c#做好,让pb调用。

但是pb只能调用最基础的c++开发的标准dll。

通过无数次的百度,我找到了一个好的方法,也许您已经知道了。

但是我觉得还是要写出来,只要还有一个为此发愁的朋友存在。

谢谢!方法思路是:1、用c#写一个类,方法的参数一定要用标准数据类型,返回值也要是标准数据类型(string、int或者结构等等)。

在这个方法里面调用各类webservice或其他http接口等pb无法直接调用的。

2、我正巧要做一个调用java写的webservice,下面贴出代码,供参考,因为用csc.exe编译程序无法处理引用,所以using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;namespace ysxt{public class ws{public string sendrecv(string sUser, string sPwd){string retu = "";try{xjca.YsxtMainServiceImplService myrefe = new xjca.YsxtMainServiceImplService(); //这里就是解决csc.exe无法编译引用问题的,xjca是在另外一个ysws.cs文件里,这个cs文件不是我写的,也不能写出来,这是用另外一个命令生成出来的,具体命令看本文最后备注myrefe.Url = myUrl;retu = myrefe.sendRecv(sUser, sPwd);}catch (Exception e){return e.Message;//一定要用try....catch,否则pb调用过程中出现错误,都没有办法知道哪里错了,这句话就是关键。

PB9.0调用Webservice步骤以及相关问题

PB9.0调用Webservice步骤以及相关问题

PB9.0调用Webservice步骤以及相关问题1,pb安装路径下找到pbsoapclient90.pbd,加到程序中;2,pb-->file--->new---->webservice Proxy Wizard输入webservice wsdl url ,一般为url?WSDL;3,生成代理对象;4,按例子调用;soapConnection conn // Define SoapConnectionpopservice1soap proxy_obj // Declare proxyint rValstring sconn = create SoapConnectionrVal = Conn.CreateInstance(proxy_obj, "popservice1soap",)trys = proxy_obj.helloworld()// Invoke servicemessagebox("", s)catch ( SoapException e )messagebox ("ErrDAT* d or", "Cannot invoke Web service")// error handlingend trydestroy conn问题点:1、调用WS传入参数为null更改WS默认的命名空间2、将http浏览器中可以调用,PB9环境中没有生成调用对象PB9可能不支持WS页面方法中返回的数据类型,任何一个返回类型不支持都将出现此问题3、出现pb9 无法请求识别元素命名空间错误PB9生成的代理类命名空间和WS地址的命名空间不一致,删除代理文件,重新建立代理类。

pb11+webservice开发分布式三层应用

pb11+webservice开发分布式三层应用

pb11+webservice开发分布式三层应用一、WEBSERVICE服务端的开发1、新建立一个workspace工作区先择FILE菜单下的NEW,新建一个工作区。

点击后出现下图在文件名处输入工作区的名称,假设我们的工作区名为webserver,单击保存按钮。

这样工作区就建立成功了。

2、建立一个.net web service 应用点击FILE菜单下的NEW选中.net web service 点击ok按钮点击next按钮点击next按钮这里我们不修改pbl库名,当然你可以按你的意思修改库名,点击next 按钮。

一直点next按钮直到出现这里需要注意一点,如果你当前的IIS端口,不是默认的80 ,那么在localhost后面要加上“:81”,假设你的端口号是81的话。

再点击一次next直到finish按钮。

3、连接数据库我们先来建立一个数据库的连接以为后期的webservice服务提供一个连接。

打开系统生成的n_webservice对像在里面写上// Profile EAS Demo DB V110SQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "ConnectString='DSN=EAS Demo DB V110;UID=dba;PWD=sql'"我是拷贝了,安装PB11默认的安装的ASA数据库,这里你可以修改成你的数据库连接参数。

数据库建立完成后,我们再建立一个ue_retrieve的方法用来提取数据库数据1、在N_webservice对像里创建立一个名为DS1的数据存储datastore2、在DS1 的dberror里面写上ls_err_a=sqlerrtext////////注意:将ls_err_a 定义为一个实例变量,如果你看不清楚出入参定义可以将本图片另存放大就可以看到了。

PB+WebService 数据库处理框架演示版安装说明

PB+WebService 数据库处理框架演示版安装说明

PB+WebService 数据库处理框架演示版安装说明片头语:本人用了PB多年,从PB6.5到PB11,一直绝对PB是个好东西,开发C/S的ERP应用相当不错,开发快捷,DW功能强大,但是随着Internet网络的发展,越来越要求应用能够支持互联网运行平台,为此结合项目,我开发了PB+Webservice平台,并成功的用于多个项目,在保留PB开发前端界面的优势,又弥补了PB的不足。

金色麦田QQ:993060860 最后提示:请在安装和运行过程中,防火墙提示访问时,请点击允许,否则程序可能无法运行。

第1章平台简介1.1 本例程说明实现在Internet环境下调用WebService进行数据交互的框架本框架已经封装了Oracle10i、Sybase12.5、SqlServer2005的JDBC连接,数据库查询、语句执行等各种数据库处理通过本框架,你可以迅速的在原有C/S开发平台下的各种程序体的基础上开发出基于互联网的应用程序1.2 系统原理《PB开发前端界面处理》<--->《通过本框架》<---->《事务服务器处理(Tomcat,Weblogic等)》<---->《调用JDBC连接池》<---->《执行相关数据库处理语句》<---->《通过本框架数据压缩返回》<---->《PB进行数据反映处理》本框架已经成功应用于多个互联网应用项目中。

1.3 用法和函数说明首先、定义一个全局的变量guo_webdb 变量名变量名= create guo_webdb其次、对guo_webdb中的各个连接参数赋值,即可使用,具体见例程函数说明:uof_dbtest 测试数据库是否连接成功uof_dbgetsqlline 直接将查询语句发到服务端,返回查询结果数据流uof_dbgetsqlfile 直接将查询语句发到服务端,返回查询结果压缩文件uof_dbexecsql 直接将执行语句发到服务端。

PB9访问WebService_的配置方法

PB9访问WebService_的配置方法

PB9访问WebService 的配置方法
注意:PB9访问WebService必须升级补丁EBF14228-8836,否则在生成代理类时会出错,编译时错误Wrong library list returned for operation 1. 建一个工作空间和应用,
2.添加用于连接WebService的连接类SoapConnection所在的库文件C:\Program Files\Sybase\Shared\PowerBuilder\ pbsoapclient90.pbd
3.创建WebService Proxy Project,生成该工程时会产生一个调用WebService功能的客户端类
4.看看英文内容,然后单击Next,(这段英文很重要的)
5.配置Webservice地址
.
6.选择要使用的服务,然后单击Next;如果看不到服务通常需要关闭PB然后再重新打开,
7.选择端口,然后单击Next
8.为代理名字写一个前缀
9.选择发布工程所在的库pbl和工程名
10.准备创建代理设置的信息显示
11.新建代理的工程信息
12.发布代理工程和发布成功后的显示
13.编写代码调用WebService,
14.执行程序后的结果
终于程序测试完成了,程序配置也写完了。

Pb8利用ole方式通过MicrosoftSoapToolkit30调用webservice

Pb8利用ole方式通过MicrosoftSoapToolkit30调用webservice
Pb8利用ole方式通过Microsoft Soap Toolkit30调用webservice
1、下载Microsoft Soap Toolkit30并安装
2、PB8以及以前版本连接Webservice代码如下:
try
OLEObject MSSOAPLib1
MSSOAPLib1 = CREATE OLEObject
Long ll_ctToNewObject("MSSOAP.SoapClient30")
IF ll_result <> 0 THEN
MessageBox("系统提示","连接MSSOAP.SoapClient失败!返回参数:"+String(ll_result))
as_output = MSSOAPLib1.msginterface("F000101",sInputXml,"xml")
catch(RuntimeError e)
return -1
end try
--武汉小虾
END IF
MSSOAPLib1.mssoapinit("http://IP:port/MessageApi.asmx?wsdl")
MSSOAPLib1.ConnectorProperty("Timeout",180000) //设置访问超时时间
string as_output
string sInputXml="<data><MerBillNo>test0211211</MerBillNo><MerNo>E000046301</MerNo><OrderDate>2016-05-25</OrderDate><OrderAmount>0.01</OrderAmount><OrderSource>01</OrderSource><ProductCode></ProductCode><ProductName>测试商品01</ProductName><CreateBy>夏晓勇</CreateBy><OrderType>01</OrderType><PayType>01</PayType><Ord_Source_Ip></Ord_Source_Ip><Ord_Termno></Ord_Termno><Source_Id></Source_Id><Bill_Code></Bill_Code><OrderState></OrderState><Sign_Type></Sign_Type><SignData></SignData><OrderData><row><AppointID></AppointID><Card_No></Card_No><Dept_Code>10080</Dept_Code><Dept_Name>消化内科</Dept_Name><Exc_Dept_Code>10080</Exc_Dept_Code><Exc_Dept_Name>消化内科</Exc_Dept_Name><Reg_Type_Code>01</Reg_Type_Code><Reg_Type_Name>-</Reg_Type_Name><Reg_Level_Code>01</Reg_Level_Code><Reg_Level_Name>普通</Reg_Level_Name><Doct_Code>0173</Doct_Code><Doct_Name>黄健</Doct_Name><Reg_Fee>0.01</Reg_Fee><Chk_Fee></Chk_Fee><Dig_Fee></Dig_Fee><Tot_Amount>0.01</Tot_Amount><Noon>PM</Noon><See_Date>2015-05-23</See_Date><See_Number>4</See_Number></row></OrderData></data>"

Pb11编写webservice数据库连接性能研究

Pb11编写webservice数据库连接性能研究

Pb是很好的开发数据库应用的软件,pb8以前可以用其自带的Transport 对象实现三层结构,但pb8以后简单好用的只有easerver,但据说这是很贵的软件,就是盗版也不好找。

Pb11可直接将nvo发布为webservice,这对pb熟手来说是一个很好的事情,可是,习惯了C/S结构开发的思路,用webservice,数据库连接会不会过于频繁?用pb内部的数据库连接方式有没有连接池?Webservice连接性能到底怎样?等等问题,是每个从C/S编程转向B/S编程或采取三层结构编程的人都会涉及到的。

下面就以pb11写webservicepb8调用对其连接池及性能进行测试。

1、单客户端、不连接数据库、pb写的webservice的响应速度测试方案:Pb11 webservice函数of_adder(),累加当前秒钟值 10000 次的结果。

客户端pb8,在不同电脑上,调用1000次。

Webservice代码如下图。

测试结果:耗时25秒,无数据库连接会话。

2、单客户端、连接数据库、pb的webservice的响应速度测试方案1:函数f_connect()连接数据库,函数of_getdbhandle()返回当前连接数据库事务对象的句柄,客户端保持webservice连接(每次调用不重新初始化),webservice 保持数据库连接不断开。

客户端pb8,在不同电脑上,调用100次。

客户端代码如下:string ls_wsdllong i, jlong numssetpointer(hourglass!)//连接系统库SQLCA.DBMS = "IN7 INFORMIX-7"SQLCA.Database = "sysmaster"erId = "informix"SQLCA.DBPass = wf_sa_pwd()SQLCA.ServerName = "192.168.0.1@server1"SQLCA.AutoCommit = FalseSQLCA.DBParm = "CommitOnDisconnect='No',DisableBind=1"connect using sqlca ;if sqlca.sqlcode <> 0 thenmessagebox('错误',"连接系统库失败",stopsign!)returnend iftime t1,t2t1 = now()st_times.text = ''//循环调用for j = 1 to long(sle_cs.text)yield()if not isvalid(w_1) then exitst_nums.text = string(j)//未创建 webservice连接则创建 ( ws为窗口实例变量 )if not isvalid(ws) thenws = Create oleobjecti = ws.ConnectToNewObject("MSSOAP.SoapClient30")if i <> 0 thendestroy wsmessagebox('提示 ','请检查是否安装了SoapSDK3.0和XML4.0', exclamation!)returnend ifws.ClientProperty("ServerHTTPRequest",true)ls_wsdl = profilestring("soap.ini", "soap", "url", "")ws.mssoapinit(ls_wsdl)ws.ConnectorProperty("Timeout",180000)end if//webservice 方法中每次连接数据库且用完即断开st_dbhandle.text = ws.of_getdbhandle() //webservice方法连接数据库时的dbhandle()//st_dbhandle.text = ws.of_adder()//从 sysmaster 库中查看 webservice 中每次连接是否都释放了,SessionID 是否保持一个// myvpc 为webservice所在主机名(web服务器主机名)select count(*) into :nums from syssessions where hostname = 'myvpc' using sqlca ;if not isvalid(w_1) then exitif sqlca.sqlcode =0 thenst_nums_dq.text = string(nums) //循环第j次时连接数据库的sid数if long(st_nums_min.text) > nums then st_nums_min.text = string(nums) if long(st_nums_max.text) < nums then st_nums_max.text = string(nums) end ifif not isvalid(w_1) then exitnextt2 = now()st_times.text = string(SecondsAfter(t1, t2))if isvalid(sqlca) thendisconnect using sqlca ;end ifif isvalid(ws) thenws.DisconnectObject ( )destroy wsend ifwebservice代码如下图:测试结果:耗时81秒,最大SID数100,每次dbhandle均不同。

PB9访问WebService_的配置方法

PB9访问WebService_的配置方法

PB9访问WebService 的配置方法
注意:PB9访问WebService必须升级补丁EBF14228-8836,否则在生成代理类时会出错,编译时错误Wrong library list returned for operation 1. 在一个工作空间和应用,
2.添加用于连接WebService的连接类SoapConnection所在的库文件C:\Program Files\Sybase\Shared\PowerBuilder\ pbsoapclient90.pbd
3.创建WebService Proxy Project,生成该工程时会产生一个调用WebService功能的客户端类
4.看看英文内容,然后单击Next,(这段英文很重要的)
5.配置Webservice地址.
6.选择要使用的服务,然后单击Next;如果看不到服务通常需要关闭PB然后再重新打开,
7.选择端口,然后单击Next
8.为代理名字写一个前缀
9.选择发布工程所在的库pbl和工程名
10.准备创建代理设置的信息显示
11.新建代理的工程信息
12.发布代理工程和发布成功后的显示
13.编写代码调用WebService,
14.执行程序后的结果
终于程序测试完成了,程序配置也写完了。

pb调用webservice

pb调用webservice

webservice服务器端会提供wsdl接口文档,pb里面用web service proxy wizard从wsdl 生成对象,再调用即可(注意把c:\program files\sybase\shared\powerbuilder下面的pbsoapclient90.pbd加入target),代码样例:SoapConnection lsc_connsoapservice lproxy_objString ls_proxy_name = "soapservice "//生成的代理对象名称String ls_url = "http://localhost:8080/axis/services/SoapService "//web service url//lsc_conn = Create SoapConnectionlsc_conn.SetOptions( "SoapLog=~ "soaplog.txt~ " ")int li_ret, ili_ret = lsc_conn.Createinstance( lproxy_obj, ls_proxy_name, ls_url)If li_ret <> 0 ThenMessageBox( "错误", "调用失败,错误号码:" + String(li_ret))ReturnEnd Iftns1__requestcontent lst_requestlst_request.arg1 = 5lst_request.arg2 = "test "tns1__returnresult lst_resultlst_result = lproxy_obj.GetResult(lst_request)MessageBox(String(lst_result.result), "code: " + lst_result.reason.code + "~nmessage: " + &lst_result.reason.message + "~ndesc: " + lst_result.reason.desc )注意pb调用webservice只能返回简单的int string类型,复杂的结构会出错怎么样在pb9里面调用WebServicepb9也出来了,速度够快的,大概看了一下,与pb8比较,增加的功能不多,主要是WebService,Xml和Ejb.我就感受了一下pb9的WebService功能,与大家共享。

PB调用WebService

PB调用WebService

PB调用WebService不管是用VS开发的基于.NET的WebService,还是用Java开发的WebService,还是用PB本身开发的.NET Web Service,PB调用WebService的原理是一样的,都是通过WSDL 访问WebServices.具体步骤有三:1.编写WebService2.创建PB Web Service Proxy3.创建PB Web Service Client1. 编写WebService此处不赘述,可以查阅相关编写WebService的资料。

2. 创建PB Web Service Proxy1) 先建立工程,然后建立Web Service Proxy。

Web Service Proxy Wizard和Web Service Proxy都可,区别是前者是向导式的,后者都是手工填写的。

2) 选择是否使用.Net引擎(Use .Net Engine)。

如果不勾选,则默认使用的是EasySoap Engine,如果没有特殊需要建议不使用.Net Engine,虽然.Net Engine支持的属性、数据类型较多(诸如.NET的DataSet等),但是比较庞大,必须需要.Net Framework SDK的支持,效率会受到一定的影响。

3) 填写WSDL的位置即可。

4) WSDL文件中包含的Web服务及端口。

5) 可以给Proxy Name加一个前缀,不加就Proxy Name就是WsDemoServiceHttpPort。

6)7)8)9)10) 部署web service proxy工程。

11) 部署完之后,可以看到webservice了。

3. 创建pb Web Service Client创建一个窗体,窗体上放置一个按钮,点击按钮,调用Web Service。

在按钮的click事件中编写PowerScript:string resultlong llsoapconnectionlsc_connn_webservicesoaplsrv_objlsc_conn = create soapconnectionlsc_conn.createinstance(lsrv_obj, 'n_webservicesoap')result = lsrv_obj.of_decode( '0054','')ll = lsrv_obj.of_test( )messagebox(string(ll),result) 调用Web Service成功!:)。

pb调用webservice

pb调用webservice

webser‎v ice服务‎器端会提供w‎s dl接口文‎档,pb里面用w‎e b servic‎e proxy wizard‎从wsdl 生‎成对象,再调用即可(注意把c:\progra‎m files\sybase‎\shared‎\powerb‎u ilder‎下面的pbs‎o apcli‎e nt90.pbd加入t‎a rget),代码样例:SoapCo‎n necti‎o n lsc_co‎n nsoapse‎r vice lproxy‎_objString‎ ls_pro‎x y_nam‎e = "soapse‎r vice "//生成的代理对‎象名称String‎ ls_url‎ = "http://localh‎o st:8080/axis/servic‎e s/SoapSe‎r vice "//web servic‎e url//lsc_co‎n n = Create‎ SoapCo‎n necti‎o nlsc_co‎n n.SetOpt‎i ons( "SoapLo‎g=~ "soaplo‎g.txt~ " ")int li_ret‎,ili_ret‎ = lsc_co‎n n.Create‎i nstan‎c e( lproxy‎_obj, ls_pro‎x y_nam‎e, ls_url‎)If li_ret‎<> 0 ThenMessag‎e Box( "错误", "调用失败,错误号码: " + String‎(li_ret‎))Return‎End Iftns1__‎r eques‎t conte‎n t lst_re‎q uestlst_re‎q uest.arg1 = 5lst_re‎q uest.arg2 = "test "tns1__‎r eturn‎r esult‎ lst_re‎s ultlst_re‎s ult = lproxy‎_obj.GetRes‎u lt(lst_re‎q uest)Messag‎e Box(String‎(lst_re‎s ult.result‎), "code: " + lst_re‎s ult.reason‎.code + "~nmessa‎g e: " + &lst_re‎s ult.reason‎.messag‎e + "~ndesc: " + lst_re‎s ult.reason‎.desc )注意pb调用‎w ebser‎v ice只能‎返回简单的i‎n t string‎类型,复杂的结构会‎出错怎么样在pb‎9里面调用W‎e bServ‎i cepb9也出来‎了,速度够快的,大概看了一下‎,与pb8比较‎,增加的功能不‎多,主要是Web‎Servic‎e,Xml和Ej‎b.我就感受了一‎下p b9的W‎e bServ‎i c e功能,与大家共享。

PB WebService应用

PB WebService应用
• 如果在安装IIS之前,已经安装了.NET FrameWork SDK,则需要执行以下命令,在IIS中注册.NET FrameWork的运行环境。
C:\WINDOWS\\Framework\v2.0.50727 \aspnet_regiis -i
在IIS中增加网站
• 在IIS增加一个网站(不是虚拟目录)。如果计算机 已存在多个网站,可以通过主机头或端口号区分出来。 如果建立的网站端口号不是80,则必须保证防火墙开 放了端口。 • 网站的版本必须为2.0或以上版本。
• IIS里面相应版本的 服务扩,必须启用(允 许)
• 新建的网站,允许是一个空站。即把网站建在一个空 白的目录上。
网站创建向导
网站创建向导
由于网站建在本地,所以IP地址可以不输(127.0.0.1)。一台电脑可以建立多个网站, 通过端口号或主机头区分出来。主机头一般为网站的域名,如.由 于在本地建立,没有绑定域名,所以用不同的端口加以区分。
设置WebService编译时,是生成一个安装包程序,还是直接发布到网站。 Localhost:9001表示发布到本机9001端口的网站上。即刚才在IIS中增加的网站。
在PB中增加WebService项目
新建项目向导完成后,PB IDE自动按向导过程中设置的组件名称,建立了一个不可视 对象。可以在该组件中实现WebService的功能,再编译发布。
在PB中增加WebService项目
可以加入其它的PBL,例如以前已经写好的一些公共类库。
在PB中增加WebService项目
输入需要增加的不可视用户对象的名称。在该用户对象中,实现WebService的功 能。最终可以把该组件编译发布为WebService的各种服务接口。
在PB中增加WebService项目

pb11开发webservice

pb11开发webservice

pb11开发webservice⽤pb11开发webservice真是很简单,现在我把搭建的过程简单描述⼀下。

1、服务端打开pb11,选择菜单file->new->target->.net web service,然后⼀路next,最后⽣产的项⽬⽂件中⾄少包含三项,⼀个webservice应⽤,⼀个p_webservice部署,⼀个n_webservice⽤户对象,然后在这个n_webservice对象中写⾃⼰的公开函数,即可。

例如,函数string wf_getdw(ref string synac)SQLCA.DBMS = "" SQLCA.LogPass = "123456" SQLCA.LogId = "sa" SQLCA.AutoCommit = FalseSQLCA.DBParm = "Namespace='System.Data.SqlClient',Database='mydb',DataSource='.'"connect;datastore lds string ls_rtnlds = create datastore lds.dataobject = "dd" lds.settransobject(sqlca) lds.retrieve()synac = lds.describe("datawindow.syntax") ls_rtn = lds.describe("datawindow.data")disconnect; destroy ldsreturn ls_rtn然后部署web service,打开p_webservice,可以看到有⼏个属性页,其中有⼀个“objcet”页,可以看到你要发布的函数列表。

PPB调用PB11的WEBSERVICE

PPB调用PB11的WEBSERVICE

PPB学习44-PPB调用PB11的WEBSERVICE首先先感谢Q群的深圳-谬谬,把这个问题解决了,我在此基础上做一个例程。

PB11可以向.NET上直接发布WEBSERVICE服务,下面我们就举个例子来看下如何实现这个过程。

以下是例程的工作环境:.net2005,PB11.2,PPB2.5,ASA9,IIS数据库采用ASA9自带的SAMPLE数据库,准备工作,为SAMPLE数据库创建一个系统的DSN。

如下图所示,命名为ASADEMO9。

这个DSN设成服务方式启动,如下图IIS请检查WWW服务是否已经开启,默认网站是否已经启动,如果没有启动可以更改一下WWW端口试下,可能你的80端口被其他程序占用。

如下图所示。

这一切准备好了,下面我们就开始先用PB11发布一个WEBSERVICE,在这个实例中,我要完成的是将一个SELECT的SQL语句做为参数,将这个SELECT语句的结果返回去。

打开PB11,NEW一个TARGET,在下面的对话框中选择.net web service,创建一个发布到.NET上的WEB SERVICE应用下面是一个向导过程,第一页,NEXT,没啥要设置的。

第二页设置是新做一个还是使用一个已有库列表,这里我们选择新做一个。

第一个选项,按NEXT设置PROJECT的名字及PBL和PBT的文件路径,我命名为P_mywebservice,文件路径我就放在下面的目录,大家根据自己的需要放置。

按NEXT这一页是否要增加其他PBL,这里我们没有其他PBL加入,直接按NEXT创建一个用户对象,取名n_mywebservice,如下图所示,按NEXT这页是设置发布到.net上的目录,可以用默认值,如下图,按NEXT添加其他资源文件和目录,这里我们就不填了,按NEXT添加需要的动态库,在我们这个例子里也没有要添加的,按NEXT设置输出,一个是生成SETUP文件,用于安装,另一个是直接发布到IIS 上,我们选发布到IIS上,并且设定IIS的地址,包括端口号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Pb调用Webservice
分类:PowerBuilder 2011-05-17 15:48 1436人阅读评论(0) 收藏举报webserviceprotocolsdocumentationsoapservicewizard
而现在WebService非常火,如果将两者结合起来呢,比如:用Net写好的WebService被Pb调用,而且还可以发布成接口形式,被其他公司所调用,合乐而不为呢?
先说一下开发环境:32位Win7旗舰版+PB11.5
其实在PB10.0出来时候,就已经支持调用WebService方式了。

如下面步骤即可实现调用。

l 步骤1
在Net中创建一个WebService方法,用于被Pb调用,如图-1所示
图-1
l 步骤2
将此WebService发布,最好发布成IIS方式,如图-2所示。

图-2
这里有一点说明下,发布成IIS以后,是可以直接在浏览器里打开的,但它的后缀是asmx,而PB需要的是wsdl方式,就是说如何生成Wsdl文件?如下图-3所示,另存为即可并将这个文件存储起来。

图-3
好了,准备工作基本完成
l 步骤3
创建PB的解决方案文件,如图-4所示
图-4
这里面要必须引用一个pbwsclient11.pbd文件,不然,会调用不成功。

这个文件在安装路径里就可以找到。

l 步骤4
从此步开始,我们按照创建对象创建一步一步操作即可,如下图列表所示
如图-5所示,选择Web Service Proxy Wizard图标
如图-6,这个选项勾不勾没有关系
如图-7,这个就要输入我们生成好的WSDL文件路径了(绝对路径)
如图-8所示,如果能到这里,就基本没有问题了
如图-9所示,到这里时,一定要编译下,就是保存图标的后面一个图标,余下事情就是编写代码,如图-10所示,是最终样子。

图-10
l 步骤5
创建一个CustomObject对象,声明一个方法,直接调用即可,如图-11所示
(注意:下面的lsc_conn.createinstance(lsv_obj,“service1soap”) 在pb9时报错,

为: lsc_conn.cr eateinstance(lsv_obj,“service1soap”,'http://wpvs2 008/countwebservice/countwebservice.asmx')后可以。

图-11
l 步骤6
就可以像调用PB本身方法一样调用了。

如图12和13
图-12
图-13
附:
访问webServices时遇到“测试窗体只能用于来自本地计算机的请求”的解决办法
在system.web节中加上以下即可解决
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>。

相关文档
最新文档