PPB调用PB11的WEBSERVICE_第1页
PPB调用PB11的WEBSERVICE_第2页
PPB调用PB11的WEBSERVICE_第3页
PPB调用PB11的WEBSERVICE_第4页
PPB调用PB11的WEBSERVICE_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PP畔习44-PPB调用PB11的WEBSERVICE首先先感谢Q群的深圳-谬谬,把这个问题解决了,我在此基础上做一个例程。PB11可以向.NET上直接发布WEBSERVICE务,下面我们就举个例子来看下如何实现这个过程。以下是例程的工作环境:.net2005,PB11.2,PPB2.5,ASA9IIS数据库采用ASA9自带的SAMPL敌据库,准备工作,为SAMPL敢据库创建一个系统的DSN如下图所示,命名为ASADEMO9CODBC数据源管理器用户DSH系妹DEM.文件dsn驱动程序|跟踪|连接池关于名称系统数据遁:I驱动程序2Ad立pti中电Server这个DSNS成服务方式启动,如下图I

2、IS请检查WWW务是否已经开启,默认网站是否已经启动,如果没有启动可以更改一下WW端口试下,可能你的80端口被其他程序占用。如下图所示。相Internet信息服务文件电)摭作查看也)帮助篁)3包国图国同图空H%Internet信息服骞-圜CHDRE2体地计算机)-1CJ+2IISK*lp+Scripts+/Printers+_Jasi)iiet_client+CW;dataw&bsririce_r(+'g眇dataweb5flrvice+_J*ehtest_root.+wettest.+Jweb_ftrp_root+,t_Jmohilink*_jmywibservice_roo

3、<+myxcb三电rvic士it._weh5ervic#root名祢SlISHylp.Scm>tsPrintersIaspnet_clientdatawrebEervicerootdatwebserviceJwebtestrooitwebtest_Jweb_erp_rooiteb_电”_mobilinkmywebservice_root稷myw*bserwice|websrvice_root明help.官ifBliisstsrt.这一切准备好了,下面我们就开始先用PB11发布一个WEBSERVICEft这个实例中,我要完成的是将一个SELECT勺SQL语句做为参数,将这个SELEC

4、诏句的结果返回去。打开PB11,NEW-个TARGET在下面的对话框中选择.netwebservice,创建一个发布到.NET上的WEBSERVIC应用卜面是一个向导过程,第一页,NEXT没啥要设置的。第二页设置是新做一个还是使用一个已有库列表,这里我们选择新做一个第一个选项,按NEXT设置PROJEC的名字及PBL和PBT的文件路径,我命名为P_mywebservice,文件路径我就放在下面的目录,大家根据自己的需要放置。按NEXT这一页是否要增加其他PBL这里我们没有其他PBL加入,直接按NEXT创建一个用户对象,取名n_mywebservice,如下图所示,按NEXT这页是设置发布到.n

5、et上的目录,可以用默认值,如下图,按NEXT添加其他资源文件和目录,这里我们就不填了,按NEXT添加需要的动态库,在我们这个例子里也没有要添加的,按NEXTIISWEB设置输出,一个是生成SETU改件,用于安装,另一个是直接发布到上,我们选发布到IIS上,并且设定IIS的地址,包括端口号。由于我的使用8080端口,所以我要加上:8080,按NEXTSpecifyDeploymentOptionsOfismda械3MeSetupf杷name;QectiydepkoytoD5H'5gyaddress;kjcalhjsveosoChoosethedesveddepfayinentmode4

6、ndenterthorttqukvdinforrndtiDn<,融戏>,qixd确认所有属性值无误就可以完成向导的工作。按FINISH结束在WORKSPA现新的节点MYWEBSERVCE面已经创建了一个应用,一个PROJEC和一个用户对象。如下图所示。-忌mywebservice(D:prnj匕ttpb:-Wmywebservice.phi(D:projectpb11myv+菸mywebservicep_mywebser¥icB十:n_mywebservice下面我们打开n_mywebservice对象,对它进行编辑。创建两个函数,一个函数名为CONNECT进接数据库),

7、输入参数为transaction类型atr_1,passby为reference。输出为STRING脚本:atr_1.DBMS="ODBC"atr_1.AutoCommit=Falseatr_1.DBParm="ConnectString='DSN=asademo9;UID=DBA;PWD=SQL'"connectusingatr_1;ifatr_1.sqlcode<>0thenreturnatr_1.sqlerrtextelsereturn'1'endif再创建一个函数,getdata_for_sql(由SQ

8、L语句返回数据),输入参数为string类型as_sql,输出为string脚本:stringls_ret,ls_data,error_sqllongll_rowdatastorelds_1lds_1=createdatastoretransactionltr_1ltr_1=createtransactionls_ret=connectdb(ltr_1)ifls_ret='1'thenltr_1.autocommit=truelds_1.create(syntaxfromsql(ltr_1,as_sql,"style(type=grid),column(font.fa

9、cename='arial',font.size=60)",error_sql)ltr_1.autocommit=falselds_1.settransobject(ltr_1)ll_row=lds_1.retrieve()ifll_row>0thenls_data=lds_1.describe('datawindow.data')ls_ret=ls_dataelsels_ret='error:norowreturn'endifelsels_ret='error:'+ls_retendifdisconnectusi

10、ngltr_1;destroyltr_1destroylds_1returnls_ret完成后保存。打开p_mywebservice,在OBJECT选项卡里,把getdata_for_sql打上勾,保存,检查"他内容是否正确Tp_Hyirttbsrrvinr事Dwv加苒mResourteNa.utFrrRfe.v«rwn户HbbuklRtficAjKtf«"*:H_mywfbHrvlct呼b胆wihnwie:门/什也餐太肝洒k坨WibMrvEfeU*yMtpmhsiti4DU|EwbGmGiq|njnmvisEmln叫bwfMfcr#附显-囿&J

11、廿用站疝1珈_鹏能依-*机4眸-ge4行FtihcboftFtrtype团司I后k*oJct_Rd止力9_2>rrtumsuh-ngUMkectAll在工具栏上按DeployProject按钮,如下图最左边的按钮。JllwploFPrysct查看OUTPU窗口中的发布信息,如果正确发布如下图所示。Default|Oy;Dedoyofpmywebservice(11:02:01CheckingISserver,.Generating.NETassemblyFile.GeneratingPBDfilesGeneratingWebservice.asmxand.(iscofiles,.Copy

12、ingtoIISserver.,.Deploysucceeded.FinishedDeployofp_mywebser7ice(11:02:23)发布结束,我们在PC上测试一下这个WEBSERVICE打开IE浏览器,在地址栏中输入如下图的地址。IE显示页面如下,'i-L'>,-,目http-'/lijCiltiuEL曰18口fn尹士Lsrvi,泞.当前黑n_mywebservice支持下列操作.有关正式定义>语查着眼务逗明。点击下面的getdata_for_sql,页面显示如下:地址电)Blittp:/Iocftlhost:8080/myw-e:beervi

13、cn_mijrwebeervice.aEinx?oin_mywebservice单击片,族取完整的操作列表口getdta_for_sql溺试若要使用HTTPPOST协议对臊作迸行测试,话单击“调用”按钮.|参数值as_5ql;select*fromdepartment!WSOAP1.1以下是SOAP1.2谙求和响应示例.所显示的占位符需替换为实际值.POST/inywebservicE/nitiywebserviceiasitixHTTP/1*1在参数中输入select*fromdepartment按调用按钮,页面显示返回结果值良)huF,/l+t/hotlTi-vx:+/<t+田i/对

14、td,卜Lfor.tdv<?xmFversron"10"ncodprig=,uU-fl"?><5tdnqiihkiss'MTpy/ifjpifHirirq'.inoRerD501?oosaiRsflfi?annFlnortcftinnviarketinq1576500Shipping703</5m?这个时候,说明你的WEBSERVICE经发布成功并且工作正常,你已经完成了一半的工作。下面我们就开始讲PPB的编程,打开PPBft件,新建一个项目,在DATABASE画板里,做一个数据库连接,连接到ASADEMO9数据库,打开应用

15、,在全局外部函数中声明如下:/ExternalFunctionsallinlibrary"PKSoapIF.DLL"FUNCTIONintegerPocketSoap_Create(booleanfInProc,REFlonglHandle)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_Destroy(longlHandle)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_SetProxy(longlHandle,readonlystring

16、pszProxyServer,longiProxyPort)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_SetProxyAuthentication(longlHandle,readonlystringpszUsername,readonlystringpszPassword)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_SetAuthentication(longlHandle,readonlystringpszUsername,readonlystrin

17、gpszPassword)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_SetMaxRedirects(longlHandle,longcRedirects)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_SetTimeout(longlHandle,longcSeconds)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_SetEndPoint(longlHandle,readonlystrin

18、gpszEndPointURL)library"PKSoapIF.dll"FUNCTIO岫tegerPocketSoap_SetSoapAction(longlHandle,readonlystringpszAction)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_GetHTTPStatus(longlHandle,REFlonglStatus)library"PKSoapIF.dll"/ActuallymaketheSOAPcallFUNCTIOMtegerPocketSoap_Si

19、mpleCall(longlHandle,readonlystringpszNameSpaceURI,readonlystringpszMethodName,readonlystringpszArgName,readonlystringpszArgValue)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_Call(longlHandle,readonlystringpszNameSpaceURI,readonlystringpszMethodName,readonlystringpszArgString)library&quo

20、t;PKSoapIF.dll"/Allthegetresultcallshaveacaller(PB)allocatedbuffer.FUNCTIONintegerPocketSoap_GetResult(longlHandle,longcRetBufLen,REFstringpszReturnValue)library"PKSoapIF.dll"FUNCTIONintegerPocketSoap_GetResults(longlHandle,longcRetBufLen,REFstringpszReturnValue)library"PKSoapIF.

21、dll"FUNCTIONintegerPocketSoap_SetParameterNameSpace(longlHandle,readonlystringpszNameSpaceURI)library"PKSoapif.dll"FUNCTIONintegerPocketSoap_SetEncodingStyle(longlHandle,readonlystringsEncodingStyle)library"PKSoapif.dll"创建一个DW(d_department),从数据库中选择DEPARTMENT选择里面三个字段,排好位置,保存D

22、VV创建一个窗体(w_main),在窗体中放一个ST控件,一个DW空件,其DATAOBJECT=d_department放两个按钮,一个是查询,一个是退出。如下图布局。LayoutnoneDeptIdDeptNameDeptHeadIdflI亘在退出按钮的CLICKED#件中写上halt在查询按钮的CLICKED件上写上脚本:stringsMethod="getdata_for_sql”stringsEndPoint="http:84:8080/mywebservice/nmywebservice.asmx"/giveittheservern

23、ameofyourhostmachine,wheretheWebServiceisdeployedtostringsNameSpace=""stringsEncodingStyle=""/thismeanssettodocument/literal-RPCisDefaultstringls_sqlintcRetBufLen=92160/10240stringsArgsstringsResultlonglHandleintiRetTRYiRet=PocketSoap_Create(true,REFlHandle)IFiRe

24、t<0THENMessageBox("CreateFailed",iRet)ENDIFiRet=PocketSoap_SetEndPoint(lHandle,sEndPoint)IFiRet<0THENMessageBox("SetEndPointFailed",iRet)ENDIF/Setencodingstyle!“iRet=PocketSoap_SetEncodingStyle(lHandle,sEncodingStyle)IFiRet<0THENMessageBox("SetEndCodingStyleFailed&q

25、uot;,iRet)ENDIFiRet=PocketSoap_SetParameterNameSpace(lHandle,sNameSpaceIFiRet<0THENMessageBox("SetParameterNameSpaceFailed",iRet)ENDIFiRet=PocketSoap_SetSoapAction(lHandle,"/getdata_for_sql")IFiRet<0THENMessageBox("SetSoapActionFailed",iRet)ENDIF/

26、preallocatetheresultstringsResult=Space(cRetBufLen)/makea"simplecall"ls_sql='select*fromdepartment'/dw_1.object.datawindow.table.selectst_1.text=ls_sqliRet=PocketSoap_SimpleCall(lHandle,sNameSpace,sMethod,"a:as_sql",ls_sql)IFiRet<0THENMessageBox("SimpleCallFailed&

27、quot;,iRet)ENDIFiRet=PocketSoap_GetResult(lHandle,cRetBufLen,REFsResult)IFiRet<0THENMessageBox("GetResultFailed",iRet)ENDIF/dw_1.importstring(sResult)MessageBox("Value:",sResult)iRet=PocketSoap_Destroy(IHandle)IFiRet<0THENMessageBox("DestroyFailed",iRet)ENDIFCATCH(throwablet)MessageBox("Caughtthrowable",t.GetMessage()ENDTRY在打开应用,在OPENT件中写上脚本OPEN(w_main)创建一个新的PROJECT设置好发布的参数,进行编译,并把程序发布到PDA±0在PDAJ装POCKETSOAW包复制PPC版的PKSOAPIF.DL及件至|JPD侬布的目录中。在PCS,用记事本打开C:Inet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论