为什么将内容声明为string会导致WinHttp在Excel VBA中不发送HTTP内容?

我有一个Excel VBAmacros,它的function相当于下面的HTTP POST:

Set WebClient = CreateObject("WinHttp.WinHttpRequest.5.1") ' ... Configure WebClient for a POST request RequestBody = "<request>" WebClient.send RequestBody 

以前,我已经明确地将RequestBody的types设置为一个string,如下所示:

 Set WebClient = CreateObject("WinHttp.WinHttpRequest.5.1") ' ... Configure WebClient for a POST request Dim RequestBody As String RequestBody = "<request>" WebClient.send RequestBody 

除了服务器没有收到任何请求内容之外,这似乎工作正常。

在通过这两个版本进行debugging时,RequestBody上的一个表将其types描述为“Variant / String”,并且内容是正确的。

为什么添加一个types会导致这个问题?

嗯…

尝试将引用添加到WinHTTP库(工具 – 参考)。 没有明显的原因有时候很重要。

但Send方法被声明为使用一个Variant参数,所以使它string没有任何意义。