欢迎光临
我们一直在努力

使用ASP建立Http组件

建站超值云服务器,限时71元/月

生成http组件

自己动手,丰衣足食,下面介绍如何生成自己的asphttp组件。

使用winsock控件,下面将介绍怎么来建立一个简单的http组件。

记住先选择mswinsck.ocx控件

下面的代码是在vb6中编译的。

代码如下:

private withevents objwinsock as mswinsocklib.winsock

private strurl as string

private struri as string

private strserver as string

private nport as long

private strhead as string

private strdata as string

private bconnected as boolean

public function httpget(url as string) as string

set objwinsock = new mswinsocklib.winsock

strurl = url

parseurl

connect

sendrequest

objwinsock.close

strhead = left(strdata, instr(strdata, vbcrlf & vbcrlf))

strdata = right(strdata, len(strdata) – instr(strdata, vbcrlf & vbcrlf))

httpget = strdata

end function

private sub parseurl()

if lcase(left(strurl, 7)) = "http://" then

if instr(8, strurl, "/") = 0 then

strserver = right(strurl, len(strurl) – 7)

struri = "/"

else

strserver = mid(strurl, 8, instr(8, strurl, "/") – 8)

struri = right(strurl, len(strurl) – instr(8, strurl, "/") + 1)

end if

if instr(strserver, ":") <> 0 then

nport = clng(right(strserver, len(strserver) – instr(strserver,

":")))

strserver = left(strserver, instr(strserver, ":") – 1)

end if

if nport = 0 then nport = 80

else

err.raise vbobjecterror, "error", "错误的url"

end if

end sub

private sub connect()

dim dtstart as date

dtstart = now()

objwinsock.remotehost = strserver

objwinsock.remoteport = nport

objwinsock.connect

do until bconnected

doevents

if datediff("s", dtstart, now) > 30 then

err.raise vbobjecterror, "error", "连接超时"

end if

loop

end sub

private sub sendrequest()

dim strcmd

dim dtstart as date

dtstart = now()

strcmd = "get " & struri & " http/1.0" & vbcrlf

strcmd = strcmd & "user-agent: asphttp.http" & vbcrlf

strcmd = strcmd & "accept: */*" & vbcrlf

strcmd = strcmd & vbcrlf

objwinsock.senddata strcmd

do until objwinsock.state = sckclosing

doevents

if datediff("s", dtstart, now) > 60 then

err.raise vbobjecterror, "error", "请求超时"

end if

loop

end sub

public property get head() as variant

head = strhead

end property

public property get body() as variant

body = strdata

end property

private sub objwinsock_dataarrival(byval bytestotal as long)

dim strtemp

objwinsock.getdata strtemp, vbstring

strdata = strdata & strtemp

end sub

private sub objwinsock_connect()

bconnected = true

end sub

private sub objwinsock_error(byval number as integer, description as string, _

byval scode as long, byval source as string, byval helpfile as string, _

byval helpcontext as long, canceldisplay as boolean)

err.raise vbobjecterror, "error", "winsock error: " & number &

vbcrlf & description

canceldisplay = true

end sub

编译该组件,然后按照下面的步骤注册该组件

c:\net stop iisadmin /y

c:\mtxstop

编译成active dll

c:\net start w3svc

在asp中调用这个组件

<%@ language=vbscript %>

<html>

<head>

<meta name="generator" content="microsoft visual studio 6.0">

</head>

<body>

<%

dim obj

set obj = server.createobject("asphttp.http")

response.write obj.httpget("http://www.chinaasp.com.cn")

%>

</body>

</html>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用ASP建立Http组件
分享到: 更多 (0)