【问题标题】:AngularJS: POST request payload empty for ArrayBufferAngularJS:ArrayBuffer的POST请求有效负载为空
【发布时间】:2015-09-04 11:07:08
【问题描述】:

我尝试使用 POST 通过ArrayBuffer 发送一些字节,但似乎请求有效负载始终为空。这是一些代码sn-p:

var buffer = new ArrayBuffer(10);
var dataView = new DataView(buffer);
dataView.setInt32(0, 0x1234ABCD);
var request = {
  method: 'POST',
  url: 'url',
  headers: {'Content-Type': 'application/octet-stream'},
  data: buffer,
  responseType: 'arraybuffer'
};
$http(request)
  .success(function(data, status, headers, config) { ... })
  .error(function(data, status, headers, config) { ... });

【问题讨论】:

  • 经过一番研究,原来是AngularJs的问题。缓冲区没有使用 AngularJs $http 在有效负载中发布,我必须使用 XHR2(AngularJs 包装)直接发布缓冲区,这是成功的。更多详情参考:html5rocks.com/en/tutorials/file/xhr2/#toc-send-string

标签: angularjs angularjs-http


【解决方案1】:

正如我所评论的,要发送 ArrayBuffer,您需要直接使用 XHR2(似乎 AngularJs 不支持它)。下面是一些如何做到这一点的代码:

var buffer = new ArrayBuffer(10);
var dataView = new DataView(buffer);
dataView.setInt32(0, 0x1234ABCD);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'url', true);
xhr.onload = function(e) {
  console.log('data received');
};
xhr.send(buffer);

更多关于 XHR2 的详细信息:http://www.html5rocks.com/en/tutorials/file/xhr2/#toc-send-string,希望这对同样困惑的人有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2015-11-29
    • 2018-07-22
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多