Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

633
Vistas
Cómo leer la respuesta de error JSON de $http si responseType es arraybuffer

Cargo algunos datos binarios usando

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

En caso de error, el servidor responde con un objeto JSON de error como

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

¿Hay alguna forma de obtener la respuesta de error en un tipo diferente a una respuesta de éxito?

 $http.post(url, data, { responseType: "arraybuffer" }) .success(function (data) { /* */ }) .error(function (data) { /* how to access data.message ??? */ })
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Editar: como señala @Paul LeBeau, mi respuesta asume que la respuesta está codificada en ASCII.

Básicamente, solo necesita decodificar el ArrayBuffer en una cadena y usar JSON.parse().

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

Realicé pruebas en IE11 y Chrome y esto funciona bien.

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de @smkanadl asume que la respuesta es ASCII. Si su respuesta está en otra codificación, eso no funcionará.

Los navegadores modernos (por ejemplo, FF y Chrome, pero aún no IE) ahora admiten la interfaz TextDecoder que le permite decodificar una cadena de un ArrayBuffer (a través de un DataView ).

 if ('TextDecoder' in window) { // Decode as UTF-8 var dataView = new DataView(data); var decoder = new TextDecoder('utf8'); var response = JSON.parse(decoder.decode(dataView)); } else { // Fallback decode as ASCII var decodedString = String.fromCharCode.apply(null, new Uint8Array(data)); var response = JSON.parse(decodedString); }
over 4 years ago · Santiago Trujillo Denunciar

0

Supongamos que en su servicio tiene una función que está usando como, Esto es para Angular 2

 someFunc (params) { let url = 'YOUR API LINK'; let headers = new Headers(); headers.append('Content-Type', 'application/json'); headers.append('Authorization','Bearer ******'); return this._http .post(url, JSON.stringify(body), { headers: headers}) .map(res => res.json()); }

Asegúrese de que cuando lo devuelva sea res.json() y no res.json. Espero que ayude, a cualquiera que tenga este problema.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda