You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB6实现HTTPS GET请求报错求助:安全通道支持出错

VB6 处理HTTPS请求修复方案

你的问题出在旧版MSXML2.ServerXMLHTTP默认不支持现代HTTPS要求的TLS协议版本(比如TLS 1.2),导致安全通道握手失败。下面提供两种可行的修复方案:

方案一:升级原代码的协议支持

直接在原代码基础上添加TLS版本配置,让组件使用符合服务器要求的加密协议:

Function GetHTMLCode(strURL As String) As String
    Dim strReturn As String
    Dim objHTTP As Object
    If Len(strURL) = 0 Then Exit Function
    
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0") ' 指定使用6.0版本,对HTTPS支持更好
    ' 设置强制使用TLS 1.2(对应数值131072)
    objHTTP.setOption 2, 131072
    
    objHTTP.Open "GET", strURL, False
    objHTTP.send
    strReturn = objHTTP.responseText
    
    Set objHTTP = Nothing
    GetHTMLCode = strReturn
End Function

关键修改说明:

  • 使用MSXML2.ServerXMLHTTP.6.0而非泛用的MSXML2.ServerXMLHTTP,6.0版本对HTTPS的兼容性更强
  • 通过setOption 2, 131072强制启用TLS 1.2,其他常用协议数值:
    • TLS 1.0: 1048576
    • TLS 1.1: 2097152

方案二:改用WinHTTP组件

WinHTTP是微软专门用于HTTP/HTTPS请求的组件,对现代加密协议支持更完善,适合替代旧的XMLHTTP:

Function GetHTMLCode(strURL As String) As String
    Dim strReturn As String
    Dim objHTTP As Object
    If Len(strURL) = 0 Then Exit Function
    
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    ' 同时启用TLS 1.0/1.1/1.2,兼容更多服务器
    objHTTP.Option(3) = 131072 + 2097152 + 1048576
    
    objHTTP.Open "GET", strURL, False
    objHTTP.send
    strReturn = objHTTP.responseText
    
    Set objHTTP = Nothing
    GetHTMLCode = strReturn
End Function

补充提示:

  • 若使用方案二,Windows XP及以上系统默认已包含WinHttp.WinHttpRequest.5.1组件
  • 部分服务器会验证客户端标识,若仍报错可添加一行模拟浏览器请求:
    objHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    

内容的提问来源于stack exchange,提问作者Junk Man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:22:11