怎么我可以发送HTTP POST请求的服务器使用Excel VBA?
题
什么载>>>情绪需要执行HTTP POST从Excel电子表格?
解决方案
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send("")
或者,为了更好地控制HTTP请求,您可以使用 WinHttp.WinHttpRequest.5.1
代替 MSXML2.ServerXMLHTTP
。
其他提示
如果你需要它的工作Mac和窗户,可以使用QueryTables:
With ActiveSheet.QueryTables.Add(Connection:="URL;http://carbon.brighterplanet.com/flights.txt", Destination:=Range("A2"))
.PostText = "origin_airport=MSN&destination_airport=ORD"
.RefreshStyle = xlOverwriteCells
.SaveData = True
.Refresh
End With
注:
- 关于输出...我不知道如果这是可能的结果返回到同样的单元,叫VBA功能。在上面的例子,结果被写入A2。
- 关于输入...如果你想要的结果,以刷新,当你改变某些细胞,确保这些细胞的参数VBA功能。
- 这不会的工作Mac的Excel2008年,它没有VBA。Mac的Excel2011年得到了VBA回。
更多详细信息,你可以看到我的完整摘要约"使用网络服务从Excel."
除了比尔蜥蜴:
大多数后端解析原始发布数据。例如,在PHP中,您将拥有一个数组$ _POST,其中将存储后期数据中的各个变量。在这种情况下,您必须使用额外的标题“Content-type:application / x-www-form-urlencoded”:
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("var1=value1&var2=value2&var3=value3")
否则,您必须阅读变量“$ HTTP_RAW_POST_DATA”的原始发布数据。
您可以通过添加对MSXML的引用来在VBA项目中使用ServerXMLHTTP。
- 打开VBA编辑器(通常通过编辑宏)
- 转到可用参考列表
- 检查Microsoft XML
- 单击“确定”。 醇>
- 致电开放方法进行连接到远程服务器
- 致电发送以发送请求。
- 通过 responseXML 阅读回复, responseText , responseStream 或 responseBody 醇>
ServerXMLHTTP MSDN文档有关ServerXMLHTTP的所有属性和方法的完整详细信息。
简而言之,它基本上是这样的:
我在使用MSXML库然后使用XMLHttpRequest对象之前这样做了。请参阅 http://scriptorium.serve-it.nl/view.php?sid = 40
不隶属于 StackOverflow