ASP與ActiveX控件交互實戰(三) - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- ASP與ActiveX控件交互實戰(三) (http://www.webasp.net/article/13/12486.htm) |
| -- 作者:未知 -- 發佈日期: 2004-08-22 |
| 龍捲風
關鍵字:ASP,ActiveX控件,數字簽名,安全 問題提出: ActiveX控件得到客戶端的信息,如何傳遞到服務端??? 一種方法就是得到值後,使用Get,Post方式提交,這可能也是最常用的. 有沒有更好一些的方法呢? 能不能在控件中直接向服務器發出請求而得到數據呢? 打開vb6,新建ActiveX控件工程。 工程名:fOcx,用戶控件名:UC3 添加1個按鈕,2個文本框 代碼如下: Option Explicit Private Sub Command1_Click() '注意字符串和數字的寫法有些區別 '使用AsyncRead通過HTTP發送你的請求 UserControl.AsyncRead "http://yang/xml/activex.asp?s1=" & Text1.Text & "", vbAsyncTypeByteArray UserControl.AsyncRead "http://yang/xml/activex.asp?s1=" & Text1.Text, vbAsyncTypeByteArray End Sub 'AsyncReadComplete 事件用來從asp頁面接受和分析。 '當容器剛完成一個異步讀取請求時 , 發生該事件? 'AsyncProp 中的數值指定了已完成的某個異步數據讀取請求, '它與前一個 AsyncRead 方法調用中的數據匹配。 'AsyncReadComplete 事件過程中應包含錯誤處理代碼,因為錯誤狀態會終止下載。 '如果發生了這種情況,當訪問 AsyncProperty 對象的 Value 屬性時將會發生錯誤。 Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty) On Error GoTo errhandle Text2.Text = ByteArrayToString(AsyncProp.Value) errhandle: Err.Raise 601, "異步讀取發生了錯誤", Err.Description End Sub '將字節數組轉換成字符串 Public Function ByteArrayToString(bytArray() As Byte) As String Dim sAns As String sAns = StrConv(bytArray, vbUnicode) ByteArrayToString = sAns End Function 我們來看看http://yang/xml/activex.asp這個文件 <% dim str str=request("s1") if str="name" then response.write ("龍捲風") elseif str="age" then response.write ("26") else response.write ("沒有可用信息返回") end if %> 很簡單,使用request接受參數,response返回。 這個例子可以進一步處理,將服務器名以屬性的方式傳遞給控件。 比如:<PARAM NAME="ServerName" VALUE="192.168.0.1 "> 然後在程序中得到,就可以使用了,如: UserControl.AsyncRead "http://192.168.0.1/xml/activex.asp?s1=" & Text1.Text & "", vbAsyncTypeByteArray 然後在程序中得到就可以靈活處理了。 |
| webasp.net |