当前位置:首页 >> 网络编程

XMLHTTP利用POST发送表单时提交中文的问题

刚才写一个小偷程序,突然发现一旦POST中文时抓取不到内容,考虑到中文编码问题,像javascript中的escape()一样,在vbscript中也可以使用这个函数,只需要这个发送就可以正常抓取到内容了send("A="&escape(A)&""&escape(B))

完成收工!

附几个小偷常用的function函数
Function ByteToStr(vIn)
    Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,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
    ByteToStr = strReturn 
End Function

Function GetURL(url,PostStr)
    Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
    With Retrieval
        .Open "POST", url, false ,"" ,""
        .setRequestHeader "Content-Type","application/x-www-form-urlencoded"
        .Send(PostStr)
        GetURL = .ResponseBody
    End With
    Set Retrieval = Nothing
    GetURL=ByteToStr(GetURL)
End Function

Function RegExpText(strng,regStr)
    Dim regEx,Match,Matches,RetStr
    Set regEx = New RegExp
    regEx.Pattern = regStr
    regEx.IgnoreCase = True
    regEx.Global = True
    Set Matches = regEx.Execute(strng)
    For Each Match in Matches
        RetStr = RetStr & Match.Value & "," 
    Next
    RegExpText = RetStr
    set regEx=nothing
End Function


用法:
Dim PostStr,getContent,getArea
PostStr = "action=mobile&mobile="&MobileNumber
getContent = GetURL("http://www.ip138.com:8080/search.asp",PostStr)
getArea = Replace(Replace(Replace(RegExpText(getContent,"卡号归属地</TD>((.|\n)*?)</TD>"),"卡号归属地</TD>",""),"<TD width=* align=""center"" class=tdc2>",""),"</TD>,","")
Response.Write(getArea)