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
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 ()
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.