在VBA中,我需要请求http消息并解析响应文本。 我已成功获取http状态为“200”的响应文本,但正文已加密。 (标题不是)所以我一直试图解密这条消息,但由于对SSL概念和编程技巧知之甚少,我已经陷入困境。
With oRequest
.Open "GET", sUrl, False
.SetRequestHeader "Accept", "*/*"
.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
.SetRequestHeader "Connection", "Keep -Alive"
'.SetClientCertificate ("HKEY_LOCAL_MACHINE/Software/Microsoft/SystemCertificates/CA/Certificates")
.Send
sResult = .GetAllResponseHeaders
Debug.Print sResult
sResult = .ResponseText
Debug.Print sResult
上面的脚本是我写的。有了这个,我有一些问题。
1。 'SetClientCertificate()'是必要的吗?我怎样才能成功获得响应文本?
2。在VBA中,如何使用证书来解码响应主体
请让我知道我误解了什么,并给我任何解决问题的线索。
[+编辑]
在脚本中,有一行:.SetRequestHeader "Accept-Encoding", "gzip , deflate"
我在问题中省略了这一行。因为我曾经认为这个问题是关于SSL的,所以我故意删除了一些我认为并不是真正必要的行。 (这是完全错误的)
删除该行后,它可以正常工作。
答案 0 :(得分:2)
我已成功获取http状态' 200'的响应文字,但正文已加密。
这没有意义。在HTTPS中,所有内容都是加密的:请求标头和正文以及响应标头和正文。我宁愿期望你得到解密的响应标题和正文,但是主体可能是压缩的,或者是你不认识的格式,所以它看起来像加密。
' SetClientCertificate()'有必要的?我怎样才能成功获得响应文本?
如果服务器要求客户端使用客户端证书对自身进行身份验证,则需要此操作。大多数网站都不需要这个。
在VBA中,如何使用证书解码响应主体
你不能。您获得的正文可能未加密或至少未使用与TLS(HTTPS)连接相关的任何内容进行加密(参见上文)。