angular 4 httpclient xml响应
const headers = new HttpHeaders({ 'Content-Type': 'text/xml' }); headers.append('Accept', 'text/xml'); headers.append('Content-Type', 'text/xml'); this.http.get('getxmlurl', {headers: headers}).subscribe(response => { return '1234'; });
嗨我正在使用angular 4 httpclient从spring控制器发出一个http get请求,它返回一个XML响应。
我遇到的问题是响应总是为空,即使我可以从chrome开发人员网络选项卡中看到xml响应。
我认为它可能与请求标题有关,angular 4默认为json但是我无法使用上面的代码更改请求标头。 有人可以请教。
谢谢
将responseType
设置为text
:
this.http.get('getXmlUrl', { responseType: 'text' }).subscribe(response => { console.log(response); });
responseType
允许值:
-
arraybuffer
-
blob
-
json
(默认) -
text
responseType值确定如何解析成功的响应正文。
请参阅Angular Docs:
HttpRequest#responseType
HttpClient#request()
这里的问题是HttpHeaders在角度上是不可变的。 因此,您应该在创建对象时进行设置,而不是设置值。 就像是
const headers = new HttpHeaders({ 'Content-Type': 'text/xml' }).set('Accept', 'text/xml');
但是您只设置了请求标头。 如果您希望您的回复是text / xml。
this.http.get('getxmlurl', { headers: headers, responseType: text/xml }).subscribe(response => { return response; });
除非您要设置请求标头,否则可以删除标头。