Как мне разместить XML-тело в Angular 5? - PullRequest
0 голосов
/ 26 апреля 2018

В настоящее время я работаю над приложением Ionic, которое должно выполнять вызовы REST API с использованием XML в качестве тела. У меня возникли проблемы при получении звонка, чтобы действительно публиковать с XML. Это мой LoginProvider. Я использую DOMParser для анализа своих данных в XML перед их отправкой в ​​API.

import { HttpClient, HttpHeaders} from '@angular/common/http';
import { Injectable } from '@angular/core';
import * as Constants from '../../services/constants';

@Injectable()
export class LoginProvider {

  constructor(public http: HttpClient) {
  }

  postLogin(username : String, password : String) {
    let parser = new DOMParser();
    let xmlString = "<alm-authentication>  <user>" + username + "</user> <password>" + password + "</password> </alm-authentication>";
    let doc = parser.parseFromString(xmlString, "application/xml");
    console.log(doc);

    let headers = new HttpHeaders()
      .set('Access-Control-Allow-Origin', '*')
      .set('Content-Type', 'application/xml');
    return new Promise(resolve => {
      this.http.post(Constants.API_ENDPOINT + "/authentication-point/alm-authenticate", doc, {headers: headers}).subscribe(data => {
        resolve(data);
      }, err => {
        console.log(err);
      });
    });
  }

}

Но когда я проверяю почтовый запрос в Google Chrome, я получаю следующее:

enter image description here Похоже, что полезная нагрузка находится в формате JSON вместо XML. Как я могу заставить его отправлять XML-файл?

Я уже пытался изменить тело на строку XML вместо файла и изменить тип содержимого, но это все равно дало ту же ошибку.

Я использую ионно-угловую версию 3.9.2 с угловой версией 5.0.3

1 Ответ

0 голосов
/ 30 апреля 2018
let doc = parser.parseFromString(xmlString, "application/xml");

doc - это объект, представляющий DOM документа XML.

http.post(Constants.API_ENDPOINT + "/authentication-point/alm-authenticate", doc, {headers: headers})

Вы передаете doc в качестве аргумента http.post.

Поскольку вы передаете объект, Angular пытается преобразовать его в JSON.

Если вы кодируете полезную нагрузку запроса самостоятельно (т.е. вы не хотите, чтобы Angular преобразовывал ее в JSON), тогда вам нужно передать строку .

Пропуск xmlString вместо doc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...