我使用POST请求在vba中编写了一个非常小的脚本。但是,当我运行它时,除了空白消息外,我得不到任何结果。我已经尝试相应地填写请求参数。也许,我无法注意哪些应该包含在参数中。我正在处理的页面包含右侧面板中的几个图像。当点击图像时,我在这里谈论的请求被发送到服务器并带回结果并显示有关其“味道”的新信息。我的目标是解析与每个图像相关的所有风格。无论如何,我试图附上所有必要的东西,以找出我所缺少的东西。提前谢谢。
这是我从chrome开发人员工具中获得的准备POST请求的内容: “https://www.dropbox.com/s/zjn0ahixhu58miq/RequestStatus.txt?dl=0”
以下是我正在尝试的内容:
Sub PostReq()
Dim http As New XMLHTTP60, html As New HTMLDocument
Dim ArgumentStr As String
ArgumentStr = "opt=flavor&opt1=207&opt2=47&ip=105"
With http
.Open "POST", "https://www.optigura.com/product/ajax/details.php", False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
.setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
.send ArgumentStr
html.body.innerHTML = .responseText
End With
MsgBox http.responseText
End Sub
这是该网页的原始链接:
“https://www.optigura.com/uk/product/gold-standard-100-whey/”
答案 0 :(得分:1)
您的代码设置了一个请求标头,如下所示:
.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
所以脚本会期望参数字符串是URL编码的(它不是&#t; t)。
尝试编码字符串,或使用" GET
"发送请求。代替。
答案 1 :(得分:0)
最后,我做到了。要接收所需的响应,必须先发送GET请求,然后再使用该get请求的响应发送POST请求。这是工作中的一个:
Sub httpPost()
Dim http As New XMLHTTP60, html As New HTMLDocument
Dim ArgumentStr As String
ArgumentStr = "opt=flavor&opt1=207&opt2=47&ip=105"
With http
.Open "GET", "https://www.optigura.com/uk/product/gold-standard-100-whey/", False
.send
End With
With http
.Open "POST", "https://www.optigura.com/product/ajax/details.php", False
.setRequestHeader "X-Requested-With", "XMLHttpRequest"
.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
.setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
.send ArgumentStr
html.body.innerHTML = .responseText
End With
MsgBox http.responseText
End Sub