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

如何在VBScript中使用WinHttp.WinHttpRequest.send方法发送二进制数据,vbscript,Vbscript,如何使用send方法发送二进制数据? 显然,它将数据视为字符串,当遇到NULL字符时停止,这在二进制数据中是合法的。最终并不是所有的数据都被发送。如果是这样,我如何设置要发送的数据的大小 Set oHTTP = Createobject( "WinHttp.WinHttpRequest.5.1" ) oHTTP.Open "PUT", myURL, False oHTTP.Send binaryData 例如,假设从文件中读取二进制数据,其大小为binaryDataSize字节。不幸的是,VB

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

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

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

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


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

您可以使用
ADODB.Stream
对象和适当的内容类型头发送文件:

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

谢谢,我知道ADODB,但它是windows自带的吗?或者它需要某种安装吗?不,那是本地的。(见MSDN)