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; });

除非您要设置请求标头,否则可以删除标头。