example ejemplo rest angular blob httpresponse angular2-http

rest - ejemplo - ¿Cómo puedo acceder al cuerpo de respuesta http de Angular 2 sin convertirlo en string o json?



return observable angular 4 (5)

Addon a @StudioLE. Puede usar el método json () para devolver datos como json.

let body = res.json()

Me gustaría copiar una respuesta REST en un blob pero no puedo hacer algo porque blob() y arrayBuffer() aún no se han implementado en el objeto de respuesta. El Cuerpo de Respuesta es una variable privada.

... return this.http.get(url, {params: params, headers: headers}) .map(res => { // can''t access _body because it is private // no method appears to exist to get to the _body without modification new Blob([res._body], {type: res.headers.get(''Content-Type'')}); }) .catch(this.log); ...

¿Hay alguna solución que pueda usar hasta que estos métodos se implementen?


Hay una solución mucho más simple para acceder al cuerpo como una cadena que no he visto documentado en ninguna parte:

let body = res.text()


No puedo ver ninguna otra solución antes de que se fusionen las siguientes relaciones públicas:

Si bien tiene un error de compilación, el campo se puede usar en tiempo de ejecución ...


Ya que encontré esta pregunta mientras corría en el mismo problema (y la documentación de Angular no está actualizada a partir de hoy), ahora puede usar:

let blob = new Blob([response.arrayBuffer()], { type: contentType });

Otra solución si, por algún motivo, se encuentra en una versión antigua de Angular 2 es:

let blob = new Blob([(<any> response)._body], { type: contentType });


establecer el tipo de respuesta de requestoptions. Eso hará que el método response.blob () funcione.

let headers = this.getAuthorizationHeader(); headers.append("Accept", "application/octet-stream"); return this.http .get(url, new RequestOptions({ headers: headers, responseType: ResponseContentType.Blob })) .map((res: Response): Blob => { return res.ok ? res.blob() : undefined; })