有一个1740字节长的文件,它的内容被读取到缓冲区res
。 res.length
为1740,res.toString('binary', 0, res.length).length
也为1740。
我使用request
lib
request.post({
url: endpoint,
headers: headers,
body: res.toString('binary', 0, res.length)
}, callback);
请求转到gSOAP服务器。通过我发送请求的服务器上的几个小时的调试,我们发现以下内容:来到服务器的请求是 1753 字节长并且一些字符被转换。特别是,十六进制B7
变为C2 B7
,因此按照此处所述进行转换:http://www.fileformat.info/info/unicode/char/b7/index.htm
我尝试设置encoding: 'binary'
和encoding: null
来请求参数,同样的结果(使用encoding : null
我只得到错误消息作为缓冲区,但这就是全部。)
我尝试使用https
库并将strean连接到请求中,结果相同。
此致,亚历山大
修改
目前,我找到了一个使用cURL的解决方法,只是通过--data-binary "@file_to_which_i_dumped_the_request"'
向cli发送请求。但app和nodejs服务器本身是在安装程序中提供的,所以我们必须在用户的机器上安装cURL,这是可以接受的,但不是最佳选择。
那么有没有办法发送带有nodejs的二进制POST主体?
感谢。
答案 0 :(得分:2)
不要使用binary
字符串编码:它已被弃用(see here),只有"另一方"才有意义。将它解码回缓冲区。
直接使用缓冲区:
request.post({
url : endpoint,
headers : headers,
body : res
}, callback);