Angular2 Http请求如何将body作为二进制返回?
我有一个url,用charset = iso-8859-7返回html内容,这意味着angulars http请求默认将数据转换为utf8,我无法正确地将它们编码回iso-8859-7.经过大量的搜索,我发现很多人都有同样的问题,大多数答案是改变服务器中的字符集,我无法做的事情,因为服务器不属于我.
所以问题是HTTP请求如何返回二进制文件,以便我可以将它们编码为iso-8859-7字符串? 编辑 – 解决方案: 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')); }
发送请求时包括RequestOptionsArgs.
在RequestOptionsArgs中指定字段 使用TextDecoder或类似的东西来解码结果. 查看文档: https://angular.io/api/http/Http https://angular.io/api/http/RequestOptions https://angular.io/api/http/ResponseContentType (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |