2008-10-10 15 views
0

J'ai une macro Excel VBA qui fait l'équivalent du HTTP POST suivants qui fonctionne avec succès:Pourquoi la déclaration de contenu en tant que chaîne entraîne-t-elle WinHttp à ne pas envoyer de contenu HTTP dans Excel VBA?

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

Auparavant, j'avais mis explicitement le type de RequestBody en tant que chaîne comme dans ce qui suit:

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

Cela semble fonctionner correctement, sauf que le serveur n'a reçu aucun contenu de requête. Lors du débogage des deux versions, une surveillance sur RequestBody a décrit son type en tant que 'Variant/String' et le contenu était correct. Pourquoi l'ajout d'un type provoque-t-il ce problème?

Pourquoi l'ajout d'un type provoque-t-il ce problème?

Répondre

2

Hmm ...

Essayez d'ajouter la référence à la bibliothèque WinHTTP (Outils - Références). Sans raison apparente, parfois, cela compte.

Mais la méthode Send est déclarée comme utilisant un paramètre Variant de toute façon, ce qui fait que String n'a pas de sens.

+0

Je m'attendrais à ce qu'il lance une sorte d'erreur au moment de l'exécution si une chaîne est passée, mais à la place il n'envoie rien. –