Vba 中的 Http 发布
Posted
技术标签:
【中文标题】Vba 中的 Http 发布【英文标题】:Http Post in Vba 【发布时间】:2011-04-27 04:22:10 【问题描述】:我想弄清楚如何在 VBA 中进行 POST。 理想情况下,我正在寻找一个可以玩的简单工作示例。 这是我到目前为止所拥有的,但我不确定如何处理它。主要是 formdata 的样子。
Function WinHTTPPostRequest(URL, formdata, Boundary)
Dim http
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", URL, False
'Set Content-Type header'
http.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary
'Send the form data To URL As POST binary request'
http.send formdata
'Get a result of the script which has received upload'
WinHTTPPostRequest = http.responseText
End Function
编辑:
所以我安装了 firebug,以便我可以获取“formdata”的对象名称(参见代码)。我原以为 formdata 看起来像这样“Form1=A&Form2=B”。但它仍然没有成功。关于我应该如何做得更好的任何建议?
编辑: 所以看起来我可能需要在我的 POST 请求中发送隐藏字段。
【问题讨论】:
下载 Fiddler 以便您可以调试/解码 HTTP 请求。你可能只是错过了一些简单的东西。 【参考方案1】:下载 Fiddler 以便您可以调试/解码 HTTP 请求。你可能只是错过了一些简单的东西。
此外,在 MSDN 库中搜索“HTTP POST VBA”时,有许多结果。 (http://social.msdn.microsoft.com/Search/en-US?query=%2BHTTP%20%2BPOST%20%2BVBA%20-***%20-social&ac=8)。 (排除内容时似乎是一个“错误”,所以我在查询中排除了***和社交结果。)
如何使用 XMLHTTP 或 ServerXMLHTTP 对象提交表单数据http://support.microsoft.com/kb/290591 使用 VBScript,但很容易转换为 vBA。
【讨论】:
【参考方案2】:要以您建议的格式(即与 GET 请求相同)发送表单数据,我认为您需要将 Content-Type 标头设置为“application/x-www-form-urlencoded”。
如果您需要发送更复杂的数据(例如,包括文件上传或其他二进制数据),最好将 Content-Type 设置为“multipart/form-data”。如何格式化请求正文的详细信息在RFC 2388 中列出,但您最好找到一个可以为您完成的库。完全正确地格式化可能会很棘手,除非您将其作为一种学习体验,否则无需重新发明***。
【讨论】:
以上是关于Vba 中的 Http 发布的主要内容,如果未能解决你的问题,请参考以下文章