Почему объявление содержимого в виде строки приводит к тому, что WinHttp не отправляет содержимое HTTP в Excel VBA? - PullRequest
0 голосов
/ 10 октября 2008

У меня есть макрос Excel VBA, который выполняет эквивалент следующего HTTP POST, который успешно работает:

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

Ранее я явно устанавливал тип RequestBody в виде строки, как показано ниже:

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

Похоже, что это работает правильно, за исключением того, что сервер не получил содержимое запроса.

При отладке в обеих версиях часы на RequestBody описывали его тип как «Variant / String», и содержимое было правильным.

Почему добавление типа вызывает эту проблему?

1 Ответ

2 голосов
/ 10 октября 2008

Хмм ...

Попробуйте добавить ссылку на библиотеку WinHTTP (Инструменты - Ссылки). Иногда без всякой очевидной причины это имеет значение.

Но метод Send объявляется как использующий параметр Variant, так что делать его String не имеет смысла.

...