高手們,最近和客戶公司CRM系統有介面通訊,客戶方用的是PB開發的CRM系統,我們這邊一般是通過http server提供json格式的業務資料
因為本人對PB不懂,特在此向高手請教,PB有沒有類似 java 上 apache 提供的httpclient 那樣的api或其他東東?
若有,請順便指明并給一點示例呼叫處理程式
請高手們指教!
多謝
uj5u.com熱心網友回復:
PowerBuilder有Inet物件,可以實作發送http請求的功能!uj5u.com熱心網友回復:
PB中的INET控制元件的使用INET控制元件可以模擬向INTERNET以GET或POST形式發送請求,并且可能得到請求回傳的頁面內容,它需要與INTERRNETESULT控制元件使用.這兩個控制元件都是不可視的,幫助檔案寫得并不很詳細,正確使用這兩個控制元件需要先對這兩個控制元件派生兩個標準類,再程式中再實體化使用.
NEW一個STANDARD CLASS,選擇INET,保存成n_inet
NEW一個STANDARD CLASS,選擇INTERNETRESULT,在INTERNETDATA函式中寫上 messagebox('回傳結果',string(data)),保存成n_ir
下面就試下,如下腳本
n_inet ln_inet
n_ir ln_ir
ln_inet = create n_inet
ln_ir = create n_ir
integer li_ret
li_ret = n_inet.geturl('http://www.china-puer.cn/list.asp?id=1450',ln_ir)
if li_ret <1 then messagebox('發生錯誤',string(li_ret))
uj5u.com熱心網友回復:
目前我在用http協議與apache 的tomcat通訊感覺用geturl和posturl一般的功能都可以實作,包括二進制流的傳輸以及壓縮等
uj5u.com熱心網友回復:
多謝,請教lzp_lrp:實作post方式,且傳送json或者xml格式內容的客戶端呼叫示例
例如傳如下格式的訊息內容到服務器端:
“
{
"cmd": "getVehicleOwnerInfo",
"params": {
"storeId": "0079",
"money": "8693.68"
}
}
”
uj5u.com熱心網友回復:
servicereference.PostURL ( urlname, urldata, headers, {serverport, } data )data區就是你上面的資料
看一下posturl的幫助和例程
uj5u.com熱心網友回復:
版主能不能給個例子,或者發一下郵箱,非常著急這個應用。多謝了 getcmmc#sina.com (請改#為@)
uj5u.com熱心網友回復:
例子可以參考pb的幫助PostURL()
功能執行HTTP Post,這樣PowerBuilder應用程式就可以通過CGI、NSAPI、ISAPI介面發送請求。
語法servicereference.PostURL ( urlname, urldata, headers, data )
引數
servicereference:Inet物件實體或參考
urlname:String型別,指定要發送請求的URL(統一資源定位器)
urldata:Blob型別,指定發送給urlname引數指定的URL的引數
headers:String型別,指定HTML首部。對Netscape瀏覽器來說,每個HTTP首部之后需要個換行符(~n),在所有首部之后再跟一個換行符(~n)
data:InternetResult實體變數,用于保存回傳的HTML
回傳值
Integer。函式執行成功時回傳1,發生錯誤時回傳下述值:
-1一般錯誤
-2指定的URL無效
-4不能連接到Internet上
-6Internet請求無效
用法
該函式的data引數要求是繼承了InternetResult物件的類用戶物件實體,在該用戶物件的定義中,需要定義覆寫函式InternetData(),用于處理Internet回傳的HTML資料。由于Internet以異步方式傳送資料,因此,data引數必須是某個實體變數或全域變數的參考(例如視窗級實體變數)。
示例 下面的代碼呼叫PostURL()。其中,Iinet_base是個Inet型別的實體變數;n_ir_msgbox是繼承了InternetResult物件的類用戶物件,iir_msgbox是該用戶物件的一個實體:
Blob lblb_args
String ls_headers
String ls_url
Long ll_length
ir_msgbox = CREATE n_ir_msgbox
ls_url = "http://coltrane.sybase.com/ "
ls_url += "cgi-bin/pbcgi60.exe/ "
ls_url += "myapp/n_cst_html/f_test? "
lblb_args = blob( " ")
ll_length = Len(lblb_args)
ls_headers = "Content-Length: " + String(ll_length) + "~n~n "
iinet_base.PostURL(ls_url, lblb_args, ls_headers, iir_msgbox)
uj5u.com熱心網友回復:
為什么不讓CRM給你們提供一個WEBSRVICE?這個不是更簡單。uj5u.com熱心網友回復:
lzp_lrp的請的非常有力,今天學到了!轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/38340.html
標籤:Web 應用
上一篇:兩條相同資料提交時相差101毫秒。都被資料庫存了進去。
下一篇:求PB12.6Classic版
