作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个 Ionic 应用程序,该应用程序应该以 XML 作为主体进行 REST API 调用。我在调用实际使用 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 中的发布请求时,我得到以下信息:
请求负载似乎是 JSON 格式,而不是 XML 格式。我怎样才能让它真正发送 XML 文件?
我已经尝试将正文更改为 xml 字符串而不是文件,并更改内容类型,但这仍然给出相同的错误。
我正在使用 Ionic-Angular 版本 3.9.2 和 Angular 版本 5.0.3
最佳答案
let doc = parser.parseFromString(xmlString, "application/xml");
doc
是表示 XML 文档 DOM 的对象。
http.post(Constants.API_ENDPOINT + "/authentication-point/alm-authenticate", doc, {headers: headers})
您正在将 doc
作为参数传递给 http.post
。
由于您正在传递一个对象,Angular 会尝试将其转换为 JSON。
如果您自己对请求负载进行编码(即您不希望 Angular 将其转换为 JSON),那么您需要传递字符串。
传递 xmlString
而不是 doc
。
关于javascript - 如何在 Angular 5 中发布 XML 主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50039677/
我是一名优秀的程序员,十分优秀!