2011年9月7日 星期三

Powerbuilder如何建立網際網路服務

PowerBuilder 要建立網路服務,基本上需要兩個物件:
inet
internetResult
inet直接建立(instance)就可以了,例如:
inet linet
linet = Create inet
而接收inet傳回的資料就需要 internetResult 了,
只是這個物件不能直接建立,必須先建立Class (類別),
並且寫入處理回傳資料的程式碼(script),再建立(instance)成為物件才能使用:

(以PB10)

首先先建立一個Standard Class
Standard Class

再選擇  Types 為 internetResult


如果是PB6的版本就先建立User object
User Object

>再選擇新建(new) >選擇 Standard Class

Standard Class

再選擇  Types 為 internetResult


並且命名為 n_internetresult

然後開啟 n_internetresult 建立一個 instance 變數
String is_text 
然後,可以在 n_internetresult 找到一個內建函數:
internetData(blob data)
寫入以下script:
is_text = String(data , EncodingUTF8!)
//如果網頁回傳的實際編碼(不是內容編碼,不要搞錯)是ansi編碼就使用EncodingANSI!)
//PB6的string轉換無法指定編碼方式,一律都是ANSI編碼

Return 1
所以,當你建立好類別 n_internetresult 就可以開始使用網路服務了。

以下程式碼,我們可以試著讀取一個網頁的內容:
inet linet
n_internetresult lir_html
integer li_rtn
string ls_htmlText

linet = Create inet
lir_html = Create n_internetresult

li_rtn = linet.GetURL("http://www.mydomain.com/index.html",lir_html)
if li_rtn = 1 then
 //取得網頁內容
 ls_htnlText = lir_html.is_text
else
 messagebox("GET URL" , "Internet error!")
 return
end if

messageBox("HTML DATA" , ls_htmlText)

Destroy lir_html
Destroy linet

2 個回應:

匿名 提到...

非常謝謝您詳細的範例,解決了我的問題.可以再請教您對於powder builder在未來發展性.我們公司目前還是pb6,想要轉換為.Net,pb已出到12,依您的看法是要升級pb或轉為.Net. 懇請賜教.

WILDOX 提到...

Re: 匿名 <7881533745628058744>
powerbuilder目前還是快速上手的MIS/ERP開發工具之一,目前在台灣,它的問題有幾個:
1.人力:現成人才難找,幾乎都是公司內訓完成,程度有的差很多。
2.資源:幾乎都要到國外網站/論壇去找。
3.費用:自從Sybase被SAP買下之後,採購費用高出很多很多,對於中小企業負擔太重。
4.環境:有windows與linux版本。
5.展望:個人認為應用程式開發無可置疑,但是與目前全WEB化的開發還是有一段落差(一言難盡),缺點是與其他不同種語言開發程式整合有不小隔閡(不容易懂,也有版本問題)。

微軟dotNet的部分,
1.人力:學的人多,比較好找,可是因為微軟開發工具版本關係,程度不深的人寫出來的程式容易出問題。
2.資源:普遍,但夠程度的在國內比較不多。
3.費用:微軟收費尚屬合理。
4.環境:只適合微軟作業系統環境。
5.展望:個人認為它屬於全特性開發工具,但也因為這樣的特性,在開發某些MIS/ERP程式碼會過於冗長,WEB支援特性不錯,但是對於第三方開發AP呼叫使用WebService有很高門檻。缺點是互動式WEB頁面開發有時候會覺得太複雜。