【问题标题】:VBA HTTP POST not workingVBA HTTP POST 不工作
【发布时间】:2015-09-14 08:18:15
【问题描述】:

我正在尝试通过 VBA 发送 HTTP 帖子。这是我的部分代码

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", url, False
objHTTP.setRequestHeader "User-Agent", "EPS 1.0"
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.setRequestHeader "content", postString
objHTTP.setRequestHeader "Content-Length", Len(postString)
objHTTP.send

问题是,代码只有在postString 小于65535 字符时才有效。如果超过65535 个字符,则会在下面一行抛出错误:

错误:参数不正确

objHTTP.setRequestHeader "content", postString

对此有什么想法吗?我是否需要设置任何其他参数才能使其正常工作?

【问题讨论】:

  • 如果您通过send 发送您的postString 会发生什么?所以,注释掉objHTTP.setRequestHeader "content", postString 并修改objHTTP.send postString
  • @TEK 我已经尝试过并且没有收到任何错误。但是响应失败意味着服务器没有收到任何内容
  • 原因是服务器只接受通过header发布的内容。这就是我通过标头发送的原因
  • 奇怪的是服务器只接受最多 16 位的内容。您是否通过不同方式向该服务器发布了其他任何内容,以验证它是否可以接受大于 16 位的内容?
  • 是的。当我通过 PERL 和 PHP 发布它时它运行良好

标签: vba ms-word


【解决方案1】:

每个人:https://support.microsoft.com/en-us/kb/290591

应该可以工作

postString = "id=" & String(66000,"x")
Dim xmlhttp 
Set xmlhttp = Createobject("MSXML2.ServerXMLHTTP")
xmlhttp.Open "POST", url, false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send postString

如果它确实工作,那么你的服务器端设置可能有问题。

【讨论】:

  • 你能解释一下"id=" & String(66000,"x")
  • 这只是一个用于测试的虚拟数据字符串:一个名为“id”的参数,其值为 66k 字符。
  • 同样的问题.. 服务器没有收到任何邮件。如果它是
  • 如果您使用 Fiddler 之类的工具监控请求,您会看到什么?
  • 说一下您的服务器平台可能会很有用——您使用的是什么?
猜你喜欢
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2015-04-18
  • 2017-07-03
  • 2017-06-26
  • 2018-11-22
相关资源
最近更新 更多