Javascript 如何使用http发布XML?
我在使用JavaScript发送xml时遇到问题。我曾试图效仿其他许多人的做法,但我没有成功。我得到一个XML语法错误:请检查XML请求,看看它是否可以被解析。代码是80040B19 这是我的密码。我正在尝试使用USPS地址验证API。在第4页,有更多的信息Javascript 如何使用http发布XML?,javascript,xml,angular,http,post,Javascript,Xml,Angular,Http,Post,我在使用JavaScript发送xml时遇到问题。我曾试图效仿其他许多人的做法,但我没有成功。我得到一个XML语法错误:请检查XML请求,看看它是否可以被解析。代码是80040B19 这是我的密码。我正在尝试使用USPS地址验证API。在第4页,有更多的信息 const apiUrl = 'http://production.shippingapis.com/ShippingAPI.dll?API=Verify'; validate(address: Object): any { co
const apiUrl = 'http://production.shippingapis.com/ShippingAPI.dll?API=Verify';
validate(address: Object): any {
const payload = this.xmlBuilder.buildObject({
AddressValidateRequest: {
$: { USERID: 'XXXXXXXXX' }, // api key hidden
Address: {
$: { ID: '0'},
FirmName: null,
Address1: address['address2'],
Address2: address['address1'], // NOT A TYPO, they swap it
City: address['city'],
State: 'NY',
Zip5: address['postal_code'],
Zip4: null
}
}
});
console.log(payload); // SEE BELOW
const headers = new Headers({ 'Content-Type': 'text/xml' });
const options = new RequestOptions({ headers: headers });
return this.http.post(this.apiUrl, { 'XML': payload }, options)
.map((res) => {
this.parseXMLStringToObject(res.text(), (err, result) => {
console.log(result);
});
});
}
下面是有效负载上的my console.log读取的内容。我已经从xml标记的顺序到必需的标记但可选的值,逐字验证了这一点。我肯定有效载荷是正确的
<AddressValidateRequest USERID="XXXXXXXXX">
<Address ID="0">
<FirmName/>
<Address1/>
<Address2>620 Eighth Avenue</Address2>
<City>New York</City>
<State>NY</State>
<Zip5>10018</Zip5>
<Zip4/>
</Address>
</AddressValidateRequest>
我能想到的一件事是,我不知何故没有正确使用http,并且不知何故发送了一个空白xml
在他们的文档中,他们列出了以下内容:
我注意到我没有在url中使用XML,但我假设当我输入内容类型:text/XML时,它会被转换。我还尝试了application/xml,它给出了相同的错误 从USPS网站上的文档来看,这个调用似乎不是一个以XML作为负载的POST,而是一个GET with XML,我想URL XML参数中编码了URL。你是对的。我看错了文件。现在,当我通过http.get在url中发送XML.toString时,它就可以工作了