Javascript 如何使用http发布XML?

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

我在使用JavaScript发送xml时遇到问题。我曾试图效仿其他许多人的做法,但我没有成功。我得到一个XML语法错误:请检查XML请求,看看它是否可以被解析。代码是80040B19

这是我的密码。我正在尝试使用USPS地址验证API。在第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);
        });
      });
  }
下面是有效负载上的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时,它就可以工作了