PB9.0 通過http協議以POST方式將XML發送到協議服務器
最近接觸了銀企互聯系統,現在需要將生成的xml發送至服務器。
我查看了pb的幫助文件,posturl可以實現該功能,但是pb提供的例子我有點看不懂,
哪位大俠幫忙解釋解釋。最好有個實例對照。
servicereference.PostURL ( urlname, urldata, headers, {serverport, } data )
Argument Description
servicereference Reference to the Internet service instance.
urlname String specifying the URL to post.
urldata Blob specifying arguments to the URL specified by urlname.
headers String specifying HTML headers. In Netscape, a newline (~n) is required after
each HTTP header and a final newline after all headers.
serverport (optional) Specifies the server port number for the request. The default value
for this argument is 0, which means that the port number is determined by the system
(port 80 for HTTP requests).
data InternetResult instance into which the function returns HTML.
主要問題提就是那個headers是干嘛用的,data又是怎么回事?
工行的開發手冊是這么說的
企業按照工行提供的xml包格式進行打包,在局域網內通過http協議以POST方式將交易包發送到NetSafe Client的安全http協議服務器。
http請求格式:action=”http://客戶端NetSafe Client的地址和加密端口號/servlet/ICBCCMPAPIReqServlet?userID=證書ID&PackageID=包序列ID &SendTime=請求時間”
請求數據格式(post方式):Version=版本號(區分版本時間,暫定0.0.0.1) &TransCode=交易代碼(區分交易類型,每個交易固定)&BankCode=客戶的歸屬單位&GroupCIS=客戶的歸屬編碼&ID=客戶的證書ID(無證書客戶可空)&PackageID=客戶的指令包序列號(由客戶ERP系統產生,不可重復)&Cert=客戶的證書公鑰信息(進行BASE64編碼;NC客戶送空) &reqData=客戶的xml請求數據
藍字標出的部分應該是放到posturl參數的那一部分?
------解決方案--------------------------------------------------------用這種方式來發送數據
OLEObject dom, http
String Http_Name,result
Http_Name = "http://... "
dom = CREATE OLEObject
http = CREATE OLEObject
//messagebox調試看是否成功
messagebox( 'http ',http.ConnectToNewObject( "Msxml2.XMLHTTP "))
messagebox( 'dom ',dom.ConnectToNewObject( "Msxml2.DOMDocument "))
dom.Load( "c:\xxx.xml ")
http.Open( "POST ", Http_Name, TRUE)
http.Send(dom.xml)
do While http.readyState <> 4 // ' 查詢狀態,延時
yield()
Loop
result = http.responseText //這個測試用! 你可不寫
messagebox( 'resul
------解決方案--------------------------------------------------------Blob lblb_args
String ls_header
String ls_url
String ls_args
long ll_length
integer li_rc
inet iinet_base,iinet
//internetresult ir
iinet_base = create inet
iinet = create inet
li_rc = GetContextService( "Internet", iinet_base )
IF li_rc = 1 THEN
ir = CREATE n_cst_internet
ls_url = "http://xxx.com/getinfo.asp?"
ls_args = "var1=tr&var2=tttt&var3=&var4=r&var5=&var6=&var7=tttt&var8=&var9=&var10=ttt&var11="
lblb_args = Blob( ls_args )
ll_length = Len( lblb_args )
ls_header = "Content-Type: " + &
"application/x-www-form-urlencoded~n" + &
"Content-Length: " + String( ll_length ) + "~n~n"
li_rc = iinet.PostURL( ls_url, lblb_args, ls_header, ir )
messagebox('',string(li_rc))
END IF
integer li_filenum
li_filenum = fileopen('c:\1.html',textmode!,write!,shared!,replace!,encodingUTF8!)
filewriteex(li_filenum,ir.is_data)
fileclose(li_filenum)
ole_1.object.navigate('c:\1.html')
destroy iinet_base
destroy iinet
destroy ir
ir 建個internetresult的standard class n_interresult作為接收返回值