專注于網絡營銷軟件及自動辦公軟件開發

羽毛球男双刘雨辰:易語言HTTP客戶端源碼

時間:2012-07-25 / 分類:技術文章 / 評論:暫無 / 瀏覽: 14,849

羽毛球张楠腹肌 www.ytaexi.com.cn
.版本 2

.程序集 HTTP客戶端, , 公開, 提供HTTP客戶端功能的封裝。支持同步 異步方式從服務器獲取數據。
.程序集變量 __回調函數, 子程序指針
.程序集變量 對象, 對象
.程序集變量 事件對象方法集, 子程序指針, , “8”
.程序集變量 事件對象結構, 對象附加數據
.程序集變量 事件對象指針, 整數型
.程序集變量 e, 對象
.程序集變量 原殼數據, 整數型
.程序集變量 __網絡地址, 文本型

.子程序 _初始化, , , 當基于本類的對象被創建后,此方法會被自動調用
.局部變量 pthis, 整數型

置入代碼 ({ 139, 69, 8, 139, 0, 137, 69, 252 })
子程序指針_重置 (__回調函數)
__網絡地址 = “”
事件對象方法集 [1] = &QueryInterface
事件對象方法集 [2] = &AddRef
事件對象方法集 [3] = &Release
事件對象方法集 [4] = &GetTypeInfoCount
事件對象方法集 [5] = &GetTypeInfo
事件對象方法集 [6] = &GetIDsOfNames
事件對象方法集 [7] = &Invoke ‘ 從這里引出事件

事件對象結構.ppv = 子程序指針_地址 (事件對象方法集 [1])
事件對象結構.成員 = pthis
事件對象指針 = 整數_地址 (事件對象結構.ppv)
‘ 借殼
賦值整數_API (原殼數據, e, 4)
賦值對象_API (e, 事件對象指針, 4)
CoInitialize (0)

.子程序 _銷毀, , , 當基于本類的對象被銷毀前,此方法會被自動調用

‘ 還殼
賦值對象_API (e, 原殼數據, 4)
CoUninitialize ()

.子程序 狀態改變, , 公開, 如果采用繼承模式。覆蓋這個方法。請求完成后。這個方法會被系統調用。
.局部變量 a, 整數型

a = 對象.讀數值屬性 (“readyState”, )
置入代碼 ({ 139, 93, 8, 139, 27, 131, 195, 4, 139, 19, 133, 210, 116, 5, 255, 117, 252, 255, 210 })

.子程序 打開, , 公開
.參數 方法, 文本型, 參考, POST 或者 GET
.參數 URL, 文本型, 參考
.參數 異步, 邏輯型, 可空, 默認為假
.參數 回調函數, 子程序指針, 可空, 如果為空。則不處理返回結果。如果你通過繼承處理。則覆蓋基類的方法原型為 <無返回值> 狀態改變()

.如果真 (假 = 對象.創建 (“WinHttp.WinHttpRequest.5.1”, ))
.如果真 (假 = 對象.創建 (“MSXML2.XMLHTTP.4.0”, ))
.如果真 (假 = 對象.創建 (“MSXML2.XMLHTTP.3.0”, ))
.如果真 (假 = 對象.創建 (“MSXML2.XMLHTTP”, ))
.如果真 (假 = 對象.創建 (“Microsoft.XMLHTTP”, ))
輸出調試文本 (“錯誤:創建XMLHTTP對象失敗?!?
返回 ()
.如果真結束

.如果真結束

.如果真結束

.如果真結束

.如果真結束

.如果真 (異步) ‘ 異步則出發事件
對象.寫屬性 (“onreadystatechange”, e)
.如果真結束
.如果 (異步 且 假 = 是否為空 (回調函數))
__回調函數 = 回調函數
.否則
子程序指針_重置 (__回調函數)
.如果結束
對象.方法 (“Open”, 方法, URL, 異步)
對象.方法 (“setRequestHeader”, “Accept-Language”, “zh-cn”)
‘ 對象.方法 (“setRequestHeader”, “Accept-Encoding”, “gzip, deflate”)

.子程序 置請求協議頭, , 公開, 注意:在打開()方法后才能設置方能有效。
.參數 名字, 文本型, 參考
.參數 值, 文本型, 參考

.如果真 (假 = 對象.是否為空 ())
對象.方法 (“setRequestHeader”, 名字, 值)
.如果真結束

.子程序 發送, , 公開
.參數 數據, 文本型, 參考 可空

.如果 (假 = 是否為空 (數據))
對象.方法 (“send”, 數據)
.否則
對象.方法 (“send”, )
.如果結束

.子程序 取文本, 文本型, 公開

.如果真 (假 = 對象.是否為空 ())
返回 (對象.讀文本屬性 (“responseText”, ))
.如果真結束
返回 (“”)

.子程序 取字節集, 字節集, 公開

.如果真 (假 = 對象.是否為空 ())
返回 (對象.讀屬性 (“responseBody”, ).取字節集 ())
.如果真結束
返回 ({ })

.子程序 返回狀態, 整數型, 公開, 返回狀態 200 成功

返回 (對象.讀數值屬性 (“status”, ))

.子程序 撤消, , 公開, 失敗返回空文本。

.如果真 (假 = 對象.是否為空 ())
對象.方法 (“abortn ”, )
.如果真結束

.子程序 取所有返回頭信息, 文本型, 公開, 失敗返回空文本。

.如果真 (假 = 對象.是否為空 ())
返回 (對象.文本方法 (“getAllResponseHeaders”, ))
.如果真結束
返回 (“”)

.子程序 取返回頭信息, 文本型, 公開
.參數 名字, 文本型, 參考

.如果真 (假 = 對象.是否為空 ())
返回 (對象.文本方法 (“getResponseHeader”, 名字))
.如果真結束
返回 (“”)

.子程序 取進度, 整數型, 公開, 0:未初始化 1:初始化(尚未發送) 2:發送數據 3:數據發送中 4:完成

.如果真 (假 = 對象.是否為空 ())
返回 (對象.讀數值屬性 (“readyState”, ))
.如果真結束
返回 (0)

.子程序 等待完成, 邏輯型, 公開
.參數 超時, 整數型

返回 (對象.邏輯方法 (“WaitForResponse”, 超時))

作者:GBB(龔辟愚)

完整源碼下載:
百度網盤下載

分享到: