web-dev-qa-db-fra.com

réponse angulaire 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';
});

Bonjour, je me sers d’un client 4 angulaire pour créer une requête http à partir d’un contrôleur Spring qui renvoie une réponse XML.

Le problème que j'ai est que la réponse est TOUJOURS NULL, même si je peux voir la réponse XML à partir de l'onglet réseau de développeurs Chrome.

Je pensais que cela pourrait être quelque chose à voir avec l'en-tête de requête, angular 4 par défaut à json, mais je ne peux pas modifier l'en-tête de requête avec le code ci-dessus. Quelqu'un peut-il s'il vous plaît des conseils.

Merci

5
user2106630

Définissez responseType sur text:

this.http.get('getXmlUrl', { responseType: 'text' }).subscribe(response => {
  console.log(response);
});

Valeurs autorisées pour responseType:

  • arraybuffer
  • blob
  • json (par défaut)
  • text

La valeur responseType détermine le résultat d'un corps de réponse réussi être analysé.

Voir les documents angulaires:
HttpRequest # responseType
HttpClient # request ()

15
MA-Maddin

Le problème ici est que les HttpHeaders sont immuables en angulaire. Ainsi, au lieu de définir les valeurs, vous devez définir lorsque vous créez l'objet. Quelque chose comme

const headers = new HttpHeaders({ 'Content-Type': 'text/xml' }).set('Accept', 'text/xml');

Mais vous ne définissez que les en-têtes de requête. Si vous voulez que votre réponse soit text/xml.

this.http.get('getxmlurl', { headers: headers, responseType: text/xml }).subscribe(response => { return response; });

Vous pouvez supprimer des en-têtes sauf si vous souhaitez définir des en-têtes de requête. 

1
Karthikeyan Mohan