`

用VB实现XMLHttp Pool

阅读更多

昨天看了鸟食轩的文章构建一个pool来管理无刷新页面的xmlhttp对象 ,自己用VB6实现了一下,结果出现了一点小问题,总结一下。

代码:

Form:Form1

Option Explicit

Private Pools As HttpPool

Private Sub Command1_Click()
    Dim o As MSXML2.XMLHTTP
    Set o = Pools.GetObject()
    Dim Handler  As MyReadyStateHandler
    Set Handler = New MyReadyStateHandler
    Handler.ini o
    o.OnReadyStateChange = Handler
    o.open "GET", "Http://localhost/js/message.htm", True
    o.send
    Set Handler = Nothing
End Sub

Private Sub Form_Load()
    Set Pools = New HttpPool
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set Pools = Nothing
End Sub

Class:HttpPool

Option Explicit

Dim Pool As Collection

'没有考虑池容量
Public Function GetObject() As MSXML2.XMLHTTP
    Dim i As Integer
    Dim o As MSXML2.XMLHTTP
    For i = 1 To Pool.Count
        Set o = Pool(i)
        If o.readyState = 4 Or o.readyState = 0 Then
        o.abort
        GoTo ExitLabel
        End If
    Next
    Set o = New MSXML2.XMLHTTP
    Pool.Add o
ExitLabel:
    Set GetObject = o
    Debug.Print Pool.Count
End Function

Private Sub Class_Initialize()
    Set Pool = New Collection
End Sub

Private Sub Class_Terminate()
    Dim i As Integer
    For i = 1 To Pool.Count
        Pool(i).abort
    Next
    Set Pool = Nothing
End Sub

Option Explicit

Dim p As XMLHTTP

Sub OnReadyStateChange()
    If p.readyState = 4 Then
        Debug.Print p.responseText
    End If
End Sub

Class:MyReadyStateHandler

Public Sub ini(o As XMLHTTP)
    Set p = o
End Sub

在原先的JavaScript的代码中没有黄色代码对应的语句,因此在VB6的调试过程中一点一个XMlHttp对象被用过后readyState状态一直是4,所以就不在触发OnReadyStateChange事件了,因此responseText只能显示一次,以后就无法工作了,最后加上o.abort一切搞定。

分享到:
评论

相关推荐

    vb xmlhttp.rar_branchs3j_vb XMLHTTP_vb XMLHTTP异步_vb xmlHttp_vb实

    vb实现xmlhttp获取网络数据功能。

    vb6用的xmlhttp模块,get和post方式提交数据,异步获取,不卡死,十分好用

    这个标题提到的"vb6用的xmlhttp模块"实际上是指使用VB6(Visual Basic 6)编程时,通过XMLHTTP组件进行GET和POST请求,以实现异步的数据提交和获取,避免程序卡死的情况。这种技术对于创建网络投票程序、信息采集...

    VB XMLHTTP 支持大文件分段与断点下载函数.rar

    在提供的压缩包"VB XMLHTTP 支持大文件分段与断点下载函数.rar"中,可能包含了一个示例函数,演示了如何在VB6中实现这样的功能。通过解压并研究`www.NewXing.com`文件,你可以更深入地了解这个函数的实现细节和使用...

    VB使用XMLHTTP实现Post与Get的方法

    在VB中,我们可以创建XMLHTTP对象来实现这些功能。以下是一段示例代码: ```vb Public Function GetData(ByVal Url As String, ByVal DataStic As DataEnum) As Variant Dim XMLHTTP As Object Dim DataS As ...

    VB使用XMLHTTP实现Post与Get的方法.rar_POST_POST GET_VB_Post_post vb_vb ge

    下面我们将详细探讨如何在VB中利用XMLHTTP对象实现这两种方法。 首先,我们需要引入XMLHTTP组件。在VB6中,可以通过引用“Microsoft XML, v.x”(通常为v3.0或v6.0)来引入这个组件。在VB.NET环境中,XMLHTTP对象已...

    VB使用Microsoft.XMLHTTP判断程序是否联入互联网

    ### VB使用Microsoft.XMLHTTP判断程序是否联...通过以上分析可以看出,使用 `Microsoft.XMLHTTP` 对象可以在不需要额外控件的情况下简单有效地实现VB程序联网检测的功能。这对于开发者来说是一个实用且高效的解决方案。

    利用VB通过xmlhttp进行数据库远程管理.doc

    利用VB通过xmlhttp进行数据库远程管理

    VB6 http post 发送与返回内容处理

    在VB6中,我们可以使用MSXML库中的XMLHTTP对象。在代码中,你需要引用Microsoft XML库,然后实例化XMLHTTP对象: ```vb Dim xhr As New MSXML2.XMLHTTP ``` 接下来,设置HTTP请求的相关属性,如URL、请求类型...

    xmlhttp 模块 vb代码

    支持gb2312和utf-8 双流网(HTTP://510122.COM)提供

    VB 3GQQ登录器(XmlHttp版本)

    【VB 3GQQ登录器 (XmlHttp版本)】是一个基于Visual Basic开发的应用程序,它利用XMLHTTP组件来实现对3GQQ的网络通信。3GQQ是腾讯公司推出的一种适用于移动设备的QQ版本,而这个登录器则是针对3GQQ服务进行登录和交互...

    cn-jp.rar_vb xmlHttp_xmlhttp_网页 提交

    利用XMLHTTP技术实现中文和日文在线翻译。本程序主要以 http://www.excite.co.jp 网站的在线翻译功能为基础,用VB模仿浏览器的提交过程将需要翻译的文本提交给网页,然后分析网页返回结果,并将其结果返回到文本框内...

    VB XMLHTTP使用方法

    通过使用 XMLHTTP 对象,可以在 VB 中实现与 Web 服务器的交互,例如发送 GET 或 POST 请求、上传文件、下载文件等。 在本例中,我们使用 XMLHTTP 对象来判断一个 URL 是否存在。具体来说,我们使用 XMLHTTP 对象...

    VB6免控件实现HTTP请求并进行网页编码处理

    直接调用系统的WinHttp对象实现网页访问和提交数据。 不使用inet1控件和winsock控件,也不使用API函数,更不用xmlhttp这种卡顿的方式。 对网页编码支持UTF-8和Unicode以及GBK/gb2312的正常处理。

    VB6Get和POST请求异步处理请求

    总之,VB6中的异步GET和POST请求通过XMLHTTP组件实现了非阻塞的网络通信,使得应用程序即使在等待服务器响应时也能保持用户界面的交互性。理解和掌握异步请求的原理和实现方式,对于提升VB6应用程序的性能和用户体验...

    XMLHTTP类模块源码

    XMLHTTP类模块是用于在易语言环境中实现异步HTTP请求的一种工具,它是基于Microsoft的XMLHttpRequest对象进行封装的。在易语言中,这个模块提供了一种简单的方式来发送HTTP请求,如GET、POST等,以便从远程服务器...

    利用XMLHTTP技术进行资源整合的研究与实现

    ### 利用XMLHTTP技术进行资源整合的研究与实现 #### 一、引言 随着信息技术的飞速发展,尤其是互联网技术的广泛应用,Web数据库系统已成为学校信息化建设中的重要组成部分。然而,在这一过程中,学校往往面临着...

    源码:vb完整获取cookieInternetGetCookie.rar

    本压缩包"vb完整获取cookieInternetGetCookie.rar"提供了一个VB(Visual Basic)编程语言编写的示例,旨在帮助开发者解决如何从Web网页中获取Cookie的问题。 首先,我们需要了解VB中的InternetGetCookie函数。这是...

    vb6组件指南(Vb高级精华)

    《VB6组件指南(VB高级精华)》是一本专注于Visual Basic 6 (VB6)编程技术的书籍,特别强调了VB6中的组件使用和高级特性。VB6是Microsoft开发的一款强大的可视化编程工具,广泛用于创建Windows应用程序。这本书的目的...

    VB6 处理Json数据源码

    2. **cJSONScript.cls**:这个可能是实现CJSON库的VB6类库,CJSON是一个小型、快速的JSON解析器和生成器,适合嵌入式系统或内存有限的环境。 3. **cStringBuilder.cls**:在VB6中,字符串操作往往不如现代语言那么...

    xmlhttp说明文档,xmlhttp中文帮助文档,chm格式

    XmlHttp.Open "GET", "http://www.baidu.com", False'这里可以用POST和GET,不过POST更好些,得到的网页始终最新 XmlHttp.send getHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode) Set XmlHttp = Nothing ...

Global site tag (gtag.js) - Google Analytics