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

163
Vistas
¿Cómo la solicitud Angular2 Http puede devolver el cuerpo como binario?

Tengo una url que devuelve el contenido html con charset=iso-8859-7, lo que significa que la solicitud http angular convierte los datos a utf8 de manera predeterminada y no puedo codificarlos nuevamente en iso-8859-7 correctamente. Después de mucho buscar, descubrí que muchas personas tenían el mismo problema y la mayoría de las respuestas eran cambiar el conjunto de caracteres en el servidor, algo que no puedo hacer porque el servidor no me pertenece.

Entonces, la pregunta es ¿cómo puede la solicitud HTTP devolver binario para que pueda codificarlos en una cadena iso-8859-7?

EDITAR - SOLUCIÓN:
Lo que finalmente hice fue usar TextDecoder y { responseType: ResponseContentType.ArrayBuffer } en RequestOptions . Aquí hay un ejemplo para ayudar a cualquiera que esté tratando de analizar páginas html y decodificarlas en la codificación correcta. Espero ayudar a todos los chicos que intentaron esto en un proyecto que usa Angular2 como Ionic2.

 public parser() { // Set content type let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded;'}); // Create a request option, with withCredentials for sending previous stored cookies let options = new RequestOptions({ withCredentials: true, headers: headers, responseType: ResponseContentType.ArrayBuffer }); return this.http.get('https://blablablablabla', options) // ...using get request .map((res: any) => { var string = new TextDecoder('iso-8859-7').decode(res._body); var parser = new DOMParser(); var htmlDoc = parser.parseFromString(string, "text/html"); console.log(string) ..... blabla blabla doing some stuff here ..... }) .catch((error: any) => Observable.throw(error || 'Server error')); }
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Incluya RequestOptionsArgs cuando envíe la solicitud.

Especifique el tipo de responseType : ResponseContentType dentro RequestOptionsArgs . (Ya sea ResponseContentType.ArrayBuffer o ResponseContentType.Blob )

Use TextDecoder o algo similar para decodificar el resultado.

Ver los documentos:

https://angular.io/api/http/Http

https://angular.io/api/http/RequestOptions

https://angular.io/api/http/ResponseContentType

about 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