




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、PP畔習44-PPB調(diào)用PB11的WEBSERVICE首先先感謝Q群的深圳-謬謬,把這個問題解決了,我在此基礎上做一個例程。PB11可以向.NET上直接發(fā)布WEBSERVICE務,下面我們就舉個例子來看下如何實現(xiàn)這個過程。以下是例程的工作環(huán)境:.net2005,PB11.2,PPB2.5,ASA9IIS數(shù)據(jù)庫采用ASA9自帶的SAMPL敵據(jù)庫,準備工作,為SAMPL敢據(jù)庫創(chuàng)建一個系統(tǒng)的DSN如下圖所示,命名為ASADEMO9CODBC數(shù)據(jù)源管理器用戶DSH系妹DEM.文件dsn驅(qū)動程序|跟蹤|連接池關于名稱系統(tǒng)數(shù)據(jù)遁:I驅(qū)動程序2Ad立pti中電Server這個DSNS成服務方式啟動,如下圖I
2、IS請檢查WWW務是否已經(jīng)開啟,默認網(wǎng)站是否已經(jīng)啟動,如果沒有啟動可以更改一下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發(fā)布一個WEBSERVICEft這個實例中,我要完成的是將一個SELECT勺SQL語句做為參數(shù),將這個SELEC
4、詔句的結果返回去。打開PB11,NEW-個TARGET在下面的對話框中選擇.netwebservice,創(chuàng)建一個發(fā)布到.NET上的WEBSERVIC應用卜面是一個向?qū)н^程,第一頁,NEXT沒啥要設置的。第二頁設置是新做一個還是使用一個已有庫列表,這里我們選擇新做一個第一個選項,按NEXT設置PROJEC的名字及PBL和PBT的文件路徑,我命名為P_mywebservice,文件路徑我就放在下面的目錄,大家根據(jù)自己的需要放置。按NEXT這一頁是否要增加其他PBL這里我們沒有其他PBL加入,直接按NEXT創(chuàng)建一個用戶對象,取名n_mywebservice,如下圖所示,按NEXT這頁是設置發(fā)布到.n
5、et上的目錄,可以用默認值,如下圖,按NEXT添加其他資源文件和目錄,這里我們就不填了,按NEXT添加需要的動態(tài)庫,在我們這個例子里也沒有要添加的,按NEXTIISWEB設置輸出,一個是生成SETU改件,用于安裝,另一個是直接發(fā)布到上,我們選發(fā)布到IIS上,并且設定IIS的地址,包括端口號。由于我的使用8080端口,所以我要加上:8080,按NEXTSpecifyDeploymentOptionsOfismda械3MeSetupf杷name;QectiydepkoytoD5H'5gyaddress;kjcalhjsveosoChoosethedesveddepfayinentmode4
6、ndenterthorttqukvdinforrndtiDn<,融戲>,qixd確認所有屬性值無誤就可以完成向?qū)У墓ぷ?。按FINISH結束在WORKSPA現(xiàn)新的節(jié)點MYWEBSERVCE面已經(jīng)創(chuàng)建了一個應用,一個PROJEC和一個用戶對象。如下圖所示。-忌mywebservice(D:prnj匕ttpb:-Wmywebservice.phi(D:projectpb11myv+菸mywebservicep_mywebser¥icB十:n_mywebservice下面我們打開n_mywebservice對象,對它進行編輯。創(chuàng)建兩個函數(shù),一個函數(shù)名為CONNECT進接數(shù)據(jù)庫),
7、輸入?yún)?shù)為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再創(chuàng)建一個函數(shù),getdata_for_sql(由SQ
8、L語句返回數(shù)據(jù)),輸入?yún)?shù)為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打上勾,保存,檢查"他內(nèi)容是否正確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窗口中的發(fā)布信息,如果正確發(fā)布如下圖所示。Default|Oy;Dedoyofpmywebservice(11:02:01CheckingISserver,.Generating.NETassemblyFile.GeneratingPBDfilesGeneratingWebservice.asmxand.(iscofiles,.Copy
12、ingtoIISserver.,.Deploysucceeded.FinishedDeployofp_mywebser7ice(11:02:23)發(fā)布結束,我們在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協(xié)議對臊作迸行測試,話單擊“調(diào)用”按鈕.|參數(shù)值as_5ql;select*fromdepartment!WSOAP1.1以下是SOAP1.2諳求和響應示例.所顯示的占位符需替換為實際值.POST/inywebservicE/nitiywebserviceiasitixHTTP/1*1在參數(shù)中輸入select*fromdepartment按調(diào)用按鈕,頁面顯示返回結果值良)huF,/l+t/hotlTi-vx:+/<t+田i/對
14、td,卜Lfor.tdv<?xmFversron"10"ncodprig=,uU-fl"?><5tdnqiihkiss'MTpy/ifjpifHirirq'.inoRerD501?oosaiRsflfi?annFlnortcftinnviarketinq1576500Shipping703</5m?這個時候,說明你的WEBSERVICE經(jīng)發(fā)布成功并且工作正常,你已經(jīng)完成了一半的工作。下面我們就開始講PPB的編程,打開PPBft件,新建一個項目,在DATABASE畫板里,做一個數(shù)據(jù)庫連接,連接到ASADEMO9數(shù)據(jù)庫,打開應用
15、,在全局外部函數(shù)中聲明如下:/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"創(chuàng)建一個DW(d_department),從數(shù)據(jù)庫中選擇DEPARTMENT選擇里面三個字段,排好位置,保存D
22、VV創(chuàng)建一個窗體(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)創(chuàng)建一個新的PROJECT設置好發(fā)布的參數(shù),進行編譯,并把程序發(fā)布到PDA±0在PDAJ裝POCKETSOAW包復制PPC版的PKSOAPIF.DL及件至|JPD儂布的目錄中。在PCS,用記事本打開C:Inet
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目管理與商務英語結合試題及答案
- 設計基礎試題庫及答案
- 股指期貨考試題及答案
- 湖北建筑b證試題及答案
- 財務管理下試題及答案
- 警犬雙盲測試題及答案
- b超考試試題及答案
- 泰州生物考試試題及答案
- 世界常識考試試題及答案
- 公務員試題及答案青霉素
- 防汛安全培訓課件
- 關于臨期商品的處理管理辦法
- 新能源全面入市是構建新型電力系統(tǒng)的重要支撐-136號文政策解讀
- 2025消防業(yè)務理論考試題庫及參考答案
- 機關財務報銷制度和流程
- DB12-T1196-2023公路養(yǎng)護工程質(zhì)量檢驗評定標準
- 水幕電影制作合同
- 交通政策對經(jīng)濟增長的效應分析-深度研究
- 兒科感染性疾病
- 公司科學管理
- 學校社團的國際化交流與合作機會
評論
0/150
提交評論