快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

使用ASP建立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.4ico.com")
%>
</BODY>
</HTML>
返回类别: 教程
上一教程: 如何用CODESMITH减少代码重复编写
下一教程: 存贮过程

您可以阅读与"使用ASP建立HTTP组件"相关的教程:
· XMLHTTP组件在ASP开发中的使用
· ASPHTTP使用范例-远程读取别人的页面,并自动写入库
· 调试 ASP 中使用的 VISUAL BASIC COM 组件
· ASP系列讲座(七)使用组件和对象
· 如何使用ASP在自己的网站建立投票机制(二)
    微笑服务 优质保证 索取样品