JavaScriptを使用してXMLを送信する際に問題が発生しました。私は多くの人がやったことをエミュレートしようとしましたが、成功しません。私はコード80040B19
とXML Syntax Error: Please check the XML request to see if it can be parsed.
を得ています。Angular httpでXMLをPOSTする方法は?
ここに私のコードです。 USPSアドレス検証APIを使用しようとしています。このdocの4ページにはさらに詳しい情報があります。
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);
});
});
}
ペイロードの私の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を送信しています。そのドキュメント上
、彼らはこのリストされています: https://servername/ShippingAPI.dll?API=Verify&XML=を...... ..
私はURLでXML
をやっていないんだけど、私はときに私は入力のContent-Typeと仮定しています気づきました: text/xmlに変換されます。私は同じエラーを与えるapplication/xmlも試しました。
あなたは正しいですか?私はドキュメントを誤解しました。これは、http.get()を使用してurl内のXML.toString –