当前位置: 首页 > 面试题库 >

如果responseType为arraybuffer,如何从$ http读取JSON错误响应

班泽语
2023-03-14
问题内容

我使用加载一些二进制数据

$http.post(url, data, { responseType: "arraybuffer" }).success(
            function (data) { /*  */ });

如果发生错误,服务器将以错误的JSON对象响应,例如

{ "message" : "something went wrong!" }

有什么方法可以得到与成功响应不同类型的错误响应?

$http.post(url, data, { responseType: "arraybuffer" })
  .success(function (data) { /*  */ })
  .error(function (data) { /* how to access data.message ??? */ })

问题答案:

编辑:正如@Paul LeBeau指出的那样,我的答案假设响应是ASCII编码的。

基本上,您只需要将ArrayBuffer解码为字符串并使用JSON.parse()。

var decodedString = String.fromCharCode.apply(null, new Uint8Array(data));
var obj = JSON.parse(decodedString);
var message = obj['message'];

我在IE11和Chrome中进行了测试,效果很好。



 类似资料:
  • 我在VueJS应用程序中使用带有Axios的blob responseType从服务器下载文档。当响应代码为200时,它可以正常工作并下载文件,但当出现任何http错误时,我无法在捕获错误时读取状态代码,因为错误是JSON响应。 是否有人遇到过类似的问题,并找到了将blob响应类型转换为json并根据状态代码抛出错误的方法 我曾尝试从Laravel后端以纯文本形式发送响应,并尝试在前端将响应转换为

  • Axios 0.17.1 响应的console.log为 {data:“{”error“:”name必须输入多个…null [“ispipe”:protected]=>null}}“,状态:203,statustext:”非权威信息“,标题:{…},配置:{…},…}配置:{adapter:f,转换请求:{…},转换响应:{…},超时:0,xsrfcookiename:”xsrf-token“,…

  • 我试图从Web读取JSON数据,但该代码返回空结果。我不确定我做错了什么。

  • 如何从改造和存储到java类并访问某个地方来读取此响应??

  • 我创建了一个反向代理,如下所示: 并从main调用它: 它在客户端可以正常工作,但是我想阅读代理的响应,我怎么做?

  • 问题内容: 我正在尝试从Web读取JSON数据,但是该代码返回空结果。我不确定我在做什么错。 问题答案: 理想的方法 不是 使用,而是直接在阅读器上使用解码器。这是一个不错的函数,它获取url并将其响应解码到结构上。 使用示例: 您不应该在生产中使用默认结构,如最初回答的那样!(/ etc调用的是哪个)。原因是默认客户端没有设置超时。如果远程服务器无响应,那将是糟糕的一天。