Node JS + DIME - POST发送二进制数据



有一个1740字节长的文件,它的内容被读到缓冲区resres.length = 1740, res.toString('binary', 0, res.length).length = 1740

我使用request lib发送POST请求

 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库并管道流到请求中,结果相同。

致以最诚挚的问候,Alexander

编辑

此刻,我找到了一个解决cURL的方法,只是用--data-binary "@file_to_which_i_dumped_the_request"'从cli发送一个请求。但是应用程序和nodejs服务器本身是在一个安装程序中发布的,所以我们也必须在用户的机器上安装cURL,这是…可以接受,但不是最好的选择。

所以有办法发送一个二进制POST体与nodejs?

谢谢。

不要使用binary字符串编码:它已被弃用(见这里),只有当"另一方"将其解码回缓冲区时才有意义。

直接使用缓冲区:

request.post({
  url     : endpoint,
  headers : headers,
  body    : res
}, callback);

相关内容

  • 没有找到相关文章

最新更新