2017-06-09 6 views
0

JavaScriptを使用してXMLを送信する際に問題が発生しました。私は多くの人がやったことをエミュレートしようとしましたが、成功しません。私はコード80040B19XML 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も試しました。

答えて

1

USPSウェブサイトのドキュメントから、呼び出しはXMLをペイロードとしてPOSTするのではなく、URL XMLパラメータにXML(私はurlencodedと仮定します)を持つGETと思われるようです。

+0

あなたは正しいですか?私はドキュメントを誤解しました。これは、http.get()を使用してurl内のXML.toString –

関連する問題