飞扬远程获取类Asp xmlHttp 源码

来源:asp之家 时间:2010-04-03 20:37:00 

本文的asp xmlhttp类,使用asp的MSXML2.ServerXMLHTTP组件来获取远程音乐文件。

类定义 Cls_AspHttp.asp:

<%
''=================================================================
''飞扬远程获取类(AspHttp) 1.0.1 Bate1
''   By 奔腾的心
''   2006-04-19
''=================================================================
Class FlyCms_AspHttp
 Public oForm,oXml,Ados
 Public strHeaders
 Public sMethod
 Public sUrl
 Public sReferer
 Public sSetCookie
 Public sLanguage
 Public sCONTENT
 Public sAgent
 Public sEncoding
 Public sAccept
 Public sData
 Public sCodeBase
 Private slresolveTimeout,slconnectTimeout,slsendTimeout,slreceiveTimeout
 '' ============================================
 '' 类模块初始化
 '' ============================================
 Private Sub Class_Initialize()
  oForm = "" 
  Set oXml = Server.CreateObject("MSXML2.ServerXMLHTTP")
  set Ados = Server.CreateObject("Adodb.Stream") 
     slresolveTimeout = 20000   '' 解析DNS名字的超时时间,20秒
     slconnectTimeout = 20000   '' 建立Winsock连接的超时时间,20秒
     slsendTimeout   = 30000   '' 发送数据的超时时间,30秒
     slreceiveTimeout = 30000   '' 接收response的超时时间,30秒
 End Sub
 '' ============================================
 '' 返回版本信息
 '' ============================================
 Public Property Get Version
  Version = "飞扬asphttp类1.0.0"
 End Property
 '' ============================================
 '' 解析DNS名字的超时时间
 '' ============================================
 Public Property Let lresolveTimeout(LngSize)
  If IsNumeric(LngSize) Then
   slresolveTimeout = Clng(LngSize)
  End If
 End Property
 '' ============================================
 '' 建立Winsock连接的超时时间
 '' ============================================
 Public Property Let lconnectTimeout(LngSize)
  If IsNumeric(LngSize) Then
   slconnectTimeout = Clng(LngSize)
  End If
 End Property
 '' ============================================
 '' 发送数据的超时时间
 '' ============================================
 Public Property Let lsendTimeout(LngSize)
  If IsNumeric(LngSize) Then
   slsendTimeout = Clng(LngSize)
  End If
 End Property
 '' ============================================
 '' 接收response的超时时间
 '' ============================================
 Public Property Let lreceiveTimeout(LngSize)
  If IsNumeric(LngSize) Then
   slreceiveTimeout = Clng(LngSize)
  End If
 End Property
 '' ============================================
 '' Method
 '' ============================================
 Public Property Let Method(strMethod)
  sMethod = strMethod
 End Property
 '' ============================================
 '' 发送url
 '' ============================================
 Public Property Let Url(strUrl)
  sUrl = strUrl
 End Property
 '' ============================================
 '' Data
 '' ============================================
 Public Property Let Data(strData)
  sData = strData
 End Property
 '' ============================================
 '' Referer
 '' ============================================
 Public Property Let Referer(strReferer)
  sReferer = strReferer
 End Property
 '' ============================================
 '' SetCookie
 '' ============================================
 Public Property Let SetCookie(strCookie)
  sSetCookie = strCookie
 End Property
 '' ============================================
 '' Language
 '' ============================================
 Public Property Let Language(strLanguage)
  sLanguage = strLanguage
 End Property
 '' ============================================
 '' CONTENT-Type
 '' ============================================
 Public Property Let CONTENT(strCONTENT)
  sCONTENT = strCONTENT
 End Property
 '' ============================================
 '' User-Agent
 '' ============================================
 Public Property Let Agent(strAgent)
  sAgent = strAgent
 End Property
 '' ============================================
 '' Accept-Encoding
 '' ============================================
 Public Property Let Encoding(strEncoding)
  sEncoding = strEncoding
 End Property
 '' ============================================
 '' Accept
 '' ============================================
 Public Property Let Accept(strAccept)
  sAccept = strAccept
 End Property
 '' ============================================
 '' CodeBase
 '' ============================================
 Public Property Let CodeBase(strCodeBase)
  sCodeBase = strCodeBase
 End Property
 '' ============================================
 '' 建立数据传送对向!
 '' ============================================
 Public Function AddItem(Key, Value)
     On Error Resume Next
     Dim TempStr
     If oForm = "" Then
         oForm = Key + "=" + Server.URLEncode(Value)
     Else
         oForm = oForm + "&" + Key + "=" + Server.URLEncode(Value)
     End If
 End Function
 '' ============================================
 '' 发送数据并取回远程数据
 '' ============================================
 Public Function HttpGet()
  Dim sReturn
  With oXml
   .setTimeouts slresolveTimeout,slconnectTimeout,slsendTimeout,slreceiveTimeout
   .Open sMethod,sUrl,False
   If sSetCookie<>"" Then 
    .setRequestHeader "Cookie", sSetCookie       ''设定Cookie
   End If
   If sReferer<>"" Then
    .setRequestHeader "Referer", sReferer       ''设定页面来源
   Else
    .setRequestHeader "Referer", sUrl
   End If
   If sLanguage<>"" Then
    .setRequestHeader "Accept-Language", sLanguage      ''设定语言
   End If
   .setRequestHeader "Content-Length",Len(sData)       ''设定数据长度
   If sCONTENT<>"" Then
    .setRequestHeader "CONTENT-Type",sCONTENT       ''设定接受数据类型
   End If
   If sAgent<>"" Then
    .setRequestHeader "User-Agent", sAgent        ''设定浏览器
   End If
   If sEncoding<>"" Then
    .setRequestHeader "Accept-Encoding", sEncoding       ''设定gzip压缩
   End If
   If sAccept<>"" Then
    .setRequestHeader "Accept", sAccept       ''文档类型
   End If
   .Send sData          ''发送数据 
   While .readyState <> 4 
    .waitForResponse 1000 
   Wend 
   strHeaders = .getAllResponseHeaders() 
   If sCodeBase<>"" Then
    sReturn    = bytes2BSTR(.responseBody)
   Else
    sReturn    = .responseBody
   End If
  End With
  HttpGet = sReturn
 End Function
 '' ============================================
 '' 处理二进制数据 
 '' ============================================
 Private Function bytes2BSTR(vIn)
     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
 '' ============================================
 '' 类模块注销
 '' ============================================
 Private Sub Class_Terminate
  oForm = "" 
  Set oXml = Nothing
  Set Ados = Nothing 
 End Sub
End Class
%>

标签:类,xmlhttp,ServerXMLHTTP,组件
0
投稿

猜你喜欢

  • redis不能访问本机真实ip地址的解决方案

    2023-07-05 13:09:44
  • flask应用部署到服务器的方法

    2023-11-25 16:59:38
  • Webpack中publicPath路径问题详解

    2024-05-11 09:06:15
  • python3 cmp实现方式

    2023-12-13 18:10:25
  • Python3 xml.etree.ElementTree支持的XPath语法详解

    2021-08-06 07:29:44
  • Python数据库的连接实现方法与注意事项

    2024-01-14 10:51:54
  • 深入解析pandas数据聚合和重组

    2023-11-17 17:45:51
  • 关于分页

    2011-07-01 12:39:03
  • pycharm中cv2的package安装失败问题及解决

    2022-09-20 09:52:35
  • Python连接Mysql实现图书借阅系统

    2024-01-17 12:08:26
  • python实现selenium截图的两种方法

    2023-08-16 06:26:57
  • Windows 64位下python3安装nltk模块

    2023-11-20 09:42:12
  • python具名元组(namedtuple)的具体使用

    2021-08-02 18:10:38
  • selenium 多窗口切换的实现(windows)

    2021-08-17 03:58:54
  • 在python带权重的列表中随机取值的方法

    2022-05-09 01:44:25
  • matplotlib事件处理基础(事件绑定、事件属性)

    2023-02-02 19:34:32
  • vue指令只能输入正数并且只能输入一个小数点的方法

    2024-06-05 09:20:44
  • 利用Python内置库实现创建命令行应用程序

    2022-04-26 03:39:19
  • Pandas.DataFrame转置的实现 <font color=red>原创</font>

    2022-03-02 03:07:34
  • 一文详解Golang协程调度器scheduler

    2024-04-30 10:05:58
  • asp之家 网络编程 m.aspxhome.com