[资料]WinHttp.WinHttpRequest.5.1使用

本文介绍如何在ASP中使用WinHttpRequest组件进行HTTP请求,包括GET和POST方法的实现方式,并提供了完整的VBScript示例代码。此外还介绍了如何设置超时时间和处理响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Demo:

<%
Dim APISite
APISite="http://127.0.0.1/XXXXX/"

Dim FreeHost_t1
Dim FreeHost_t2
Dim FreeHost_t3
Dim FreeHost_t4

FreeHost_t1=20000
FreeHost_t2=20000
FreeHost_t3=30000
FreeHost_t4=240000

Function GETOP(tar,req)
    Dim objXMLHTTP
    Set objXMLHTTP = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
    objXMLHTTP.Option(6)=0
    objXMLHTTP.setTimeouts FreeHost_t1, FreeHost_t2, FreeHost_t3, FreeHost_t4
    objXMLHTTP.open  "GET",APISite&tar&"?"&req, False
    objXMLHTTP.send
    If objXMLHTTP.status=200 Then
        GETOP = bytes2BSTR(objXMLHTTP.responsebody)
    Else
        GETOP="HTTP Status:"&objXMLHTTP.status&" Information:"&bytes2BSTR(objXMLHTTP.responsebody)
    End If
    Set objXMLHTTP = Nothing
End Function

Function GETOPBYTE(tar,req)
    Dim objXMLHTTP
    Set objXMLHTTP = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
    objXMLHTTP.Option(6)=0
    objXMLHTTP.setTimeouts FreeHost_t1, FreeHost_t2, FreeHost_t3, FreeHost_t4
    objXMLHTTP.open  "GET",APISite&tar&"?"&req, False
    objXMLHTTP.send
    If objXMLHTTP.status=200 Then
        GETOPBYTE = objXMLHTTP.responsebody
    Else
        GETOP="HTTP Status:"&objXMLHTTP.status&" Information:"&bytes2BSTR(objXMLHTTP.responsebody)
    End If
    Set objXMLHTTP = Nothing
End Function

Function POSTOP(tar,PostBody)
    Dim objXMLHTTP
    Set objXMLHTTP = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
    objXMLHTTP.Option(6)=0
    objXMLHTTP.setTimeouts FreeHost_t1, FreeHost_t2, FreeHost_t3, FreeHost_t4
    objXMLHTTP.open  "POST",APISite&tar, False
    objXMLHTTP.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
    objXMLHTTP.setRequestHeader "Content-Length",Len(PostBody)
    objXMLHTTP.send PostBody

    If objXMLHTTP.status=200 Then
        POSTOP = bytes2BSTR(objXMLHTTP.responsebody)
    Else
        POSTOP="HTTP Status:"&objXMLHTTP.status&" Information:"&bytes2BSTR(objXMLHTTP.responsebody)
    End If
    Set objXMLHTTP = Nothing
End Function

Function Bytes2bStr(vin)
  Dim BytesStream,StringReturn
  Set BytesStream = Server.CreateObject("ADODB.Stream")
  BytesStream.Type = 2
  BytesStream.Open
  BytesStream.WriteText vin
  BytesStream.Position = 0
  BytesStream.Charset = "big5"
  BytesStream.Position = 2
  StringReturn =BytesStream.ReadText
  BytesStream.close
  Set BytesStream = Nothing
  Bytes2bStr = StringReturn
End Function
%>

''APIret=GETOP("index.asp","Act=StockMoveResetPdf&mid=" & mid_ & "&state1=" & state1 & "&state2=" & state2 & "&state3=" & state3)
''APIret=POSTOP("index.asp",Request.form)

参考资料:

http://www.docin.com/p-387428585.html

 

 

转载于:https://www.cnblogs.com/Athrun/archive/2012/12/12/ASP_WinHttpRequest.html

<think>好的,我现在需要处理用户关于WinHttp.WinHttpRequest.5.1的教程和代码示例的请求。首先,用户提供的引用内容中有两篇提到使用这个COM对象进行HTTP请求。我需要先确保自己对这个组件有足够的了解。 WinHttp.WinHttpRequest.5.1是用于发送HTTP请求的COM组件,通常在VBScript或VBA中使用。用户可能需要的是如何在脚本中创建对象、设置请求、发送和处理响应的步骤。根据引用中的代码片段,用户可能在使用ASP或其他服务器端脚本,所以示例代码应该基于VBScript或者类似的语言。 接下来,我需要回忆这个组件的常用方法和属性。比如Open方法用于指定请求的类型和URL,Send方法发送请求,ResponseText获取响应内容。还要考虑错误处理,比如超时设置和状态码检查。引用中提到的Set WinHttp = Server.CreateObject说明用户可能是在ASP环境中,所以示例应该符合这个环境。 然后,我需要组织教程的结构。首先介绍如何创建对象实例,然后逐步讲解如何配置请求参数(如Open方法的参数),发送请求,处理响应,最后给出一个完整的示例。同时,要指出注意事项,比如需要服务器支持COM组件,以及可能的权限问题。 用户可能遇到的问题包括如何处理POST请求、设置请求头、处理超时和错误。因此,在教程中需要覆盖这些方面。例如,使用SetRequestHeader方法设置Content-Type,或者在Send方法中传递POST数据。 另外,根据用户提供的引用,创建对象和赋值的步骤已经明确,但可能还需要解释每个步骤的作用,比如为什么需要调用Open方法,以及如何检查响应状态。同时,引用提到的是WinHttpRequest的常见使用方式,所以需要确保示例代码符合最佳实践。 最后,生成相关问题,帮助用户进一步学习,比如如何发送POST请求,处理cookie,或者处理HTTPS请求。这些问题应该覆盖用户可能遇到的进阶需求,确保他们能通过教程和问题扩展知识。</think>### WinHttp.WinHttpRequest.5.1 使用教程及代码示例 #### 1. 基础对象创建与初始化 通过 VBScript 或 ASP 创建 COM 对象实例: ```vbscript Set WinHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1") ``` 此代码通过 COM 机制实例化 HTTP 客户端对象[^1],变量 `WinHttp` 将持有该对象的引用。 #### 2. 请求配置与发送 配置 GET 请求示例: ```vbscript WinHttp.Open "GET", "https://api.example.com/data", False WinHttp.Send ``` - `Open` 方法接受三个参数:请求方法、目标 URL、是否异步(False 表示同步) - `Send` 方法触发实际网络请求[^2] #### 3. 响应处理 获取返回结果: ```vbscript If WinHttp.Status = 200 Then Response.Write WinHttp.ResponseText Else Response.Write "请求失败,状态码:" & WinHttp.Status End If ``` 通过 `ResponseText` 属性获取响应体内容,`Status` 属性读取 HTTP 状态码。 #### 4. POST 请求示例 发送表单数据的完整流程: ```vbscript Set WinHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1") WinHttp.Open "POST", "https://api.example.com/submit", False WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" WinHttp.Send "username=test&password=secret" If WinHttp.Status = 200 Then Response.Write "响应数据:" & WinHttp.ResponseText Else Response.Write "提交失败,错误码:" & WinHttp.Status End If ``` #### 5. 进阶配置 ```vbscript ' 设置超时为 10 秒 WinHttp.SetTimeouts 10000, 10000, 10000, 10000 ' 添加自定义请求头 WinHttp.SetRequestHeader "Authorization", "Bearer token123" ' 启用自动重定向 WinHttp.Option(6) = True ``` #### 注意事项 1. 需要服务器端启用 COM 组件支持 2. 生产环境建议添加错误处理 3. HTTPS 请求需要验证证书有效性 4. 同步模式可能阻塞线程,高并发场景慎用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值