使用ASP建立Http组件

2008-04-09 04:40:13来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

生成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, ":") $#@60;$#@62; 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

 ? DateDiff("s", dtStart, Now) $#@62; 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) $#@62; 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中调用这个组件

  $#@60;%@ Language=VBScript %$#@62;

  $#@60;HTML$#@62;

  $#@60;HEAD$#@62;

  $#@60;META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"$#@62;

  $#@60;/HEAD$#@62;

  $#@60;BODY$#@62;

  $#@60;%

  Dim obj

  Set obj = Server.CreateObject("aspHttp.http")

  Response.Write obj.httpGet("http://www.chinaasp.com.cn")

  %$#@62;

  $#@60;/BODY$#@62;

  $#@60;/HTML$#@62;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:如何在vb6中操作回收站

下一篇:用VB制作屏幕保护程序