注册 登录
编程论坛 ASP技术论坛

帮我看下这段代码的详细意思

chenguoxing517 发布于 2009-12-31 14:45, 760 次点击
<%
On Error Resume Next
Server.ScriptTimeOut=9999999
response.write(getHTTPPage("http://))
    function getHTTPPage(url)
        dim http
        set http=createobject("MSXML2.XMLHTTP")
        Http.open "GET",url,false
        Http.send()
        if Http.readystate<>4 then
            exit function
        end if
        getHTTPPage=bytes2BSTR(Http.responseBody)
        set http=nothing
        if err.number<>0 then err.Clear
    end function
   
   
    Function bytes2BSTR(vIn)
        dim strReturn
        dim i,ThisCharCode,NextCharCode
        strReturn = ""
        For i = 1 To LenB(vIn)
            ThisCharCode = AscB(MidB(vIn,i,1))
            If ThisCharCode < &H80 Then
                    strReturn = strReturn & Chr(ThisCharCode)
            Else
                    NextCharCode = AscB(MidB(vIn,i+1,1))
                    strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
                    i = i + 1
            End If
        Next
            bytes2BSTR = strReturn
    End Function
%>

据我个人的了解,这段代码的意思为:使用xmlhttp对象访问远程http服务器上某个网站下的某个页面,然后获取被访问页面返回的内容,对这段内容重新编码。我现在想问的是http://这个url根本无法正常访问,也就是说该xmlhttp对象的responsebody的内容应该为空吧,然后去执行编码的时候,因为编码函数传进来的参数就是该被访问页面的返回值,是否会报类似NullPointerException(即空指针异常),因为内容为空?而加上Server.ScriptTimeOut=9999999
这句代表一直要执行这么长时间,所以导致页面假死的状态?
5 回复
#2
aspic2009-12-31 15:32
Server.ScriptTimeOut=9999999 '脚本超时时间
#3
aspic2009-12-31 15:33
if Http.readystate<>4 then
            exit function
        end if
已经跳出
#4
chenguoxing5172009-12-31 16:11
想问一下,Http.readystate什么时候等于4,也就是一次回发已结束
假如该xmlhttp对象打开的url根本无法访问,那该http.readystate返回的值还会是4吗?

#5
aspic2009-12-31 16:56
        在请求服务器完成前,首先检查readyState是否等于4,如果是,就可以继续执行。
   readyState属性值

--------------------------------------------------------------------------------
               值                                                               意义
--------------------------------------------------------------------------------
               0                                            未初始化:对象不包含数据
               1                                            正在装载:对象当前正在装载它的数据
               2                                            已经装载:对象已经完成了数据装载
               3                                            交互式的:即使对象还未完全转载完,用户也可能与对象进行交互
               4                                            完成:对象完成了初始化
--------------------------------------------------------------------------------
         然后检查的是请求的状态,即服务器返回的状态码(对于请求的每个文件,服务器都会在幕后返回这些编码,但是浏览器旨在出错时显示它们)。
        200意味一切正常,404表示请求文件不存在。
#6
aspic2009-12-31 16:57
其实应该再做个检查服务器返回的状态
1