如何在 VBScript 中使用 WinHttp.WinHttpRequest.Send 方法发送二进制数据

How to send binary data with WinHttp.WinHttpRequest.Send method in VBScript

如何使用 send 方法发送二进制数据? 显然它将数据视为字符串,并在遇到 NULL 字符时停止,这在二进制数据中是合法的。最终并非所有数据都被发送。如果是这样,我该如何设置要发送的数据大小呢?

Set oHTTP = Createobject( "WinHttp.WinHttpRequest.5.1" )
oHTTP.Open "PUT", myURL, False
oHTTP.Send binaryData

假设从文件中读取二进制数据,其大小为binaryDataSize字节。

不幸的是,VBScript 没有处理二进制文件的正确例程。 作为解决方法,您可以使用一些方法来读取此处描述的二进制文件 Read and write binary file in VBscript

如果这仍然没有帮助,那么您可以在发送之前用 base64 对数据进行编码 Base64 Encode String in VBScript

您可以使用 ADODB.Stream object 和适当的 content-type header:

发送文件
Const adTypeBinary = 1

Set request = CreateObject("WinHttp.WinHttpRequest")
Set dataStream = CreateObject("ADODB.Stream")

dataStream.Type = adTypeBinary
dataStream.Open
dataStream.LoadFromFile "C:\path\to\your.file"

request.Open "PUT", "http://your/url"
request.SetRequestHeader "Content-Type", "application/octet-stream"
request.Send dataStream