VBA中的HTTP POST

8

我正在尝试弄清楚如何在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 请求了。也许你只是漏掉了一些简单的东西。 - AMissico
2个回答

4

为了以你建议的格式发送表单数据(即与GET请求相同),我认为您需要将Content-Type标头设置为“application/x-www-form-urlencoded”。

如果您需要发送更复杂的数据(例如,包括文件上传或其他二进制数据),最好将Content-Type设置为“multipart/form-data”。如何格式化请求体的详细信息在RFC 2388中说明,但最好找到一个可以为您完成此操作的库。确保格式正确可能有些棘手,除非您这样做是为了学习经验,否则没有必要重复造轮子。


0

下载 Fiddler 以便您可以调试/解码HTTP请求。您可能只是错过了一些简单的东西。

此外,在MSDN库中搜索“HTTP POST VBA”时会出现许多结果。(http://social.msdn.microsoft.com/Search/en-US?query=%2BHTTP%20%2BPOST%20%2BVBA%20-stackoverflow%20-social&ac=8)。(在查询中排除stackoverflow和social结果似乎存在“错误”)

如何使用XMLHTTP或ServerXMLHTTP对象提交表单数据,请参见http://support.microsoft.com/kb/290591,该文档使用VBScript编写,但很容易转换为vBA。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接