具有XMLHTTP的USPS API返回错误80040B19

时间:2017-07-04 19:19:59

标签: javascript xmlhttprequest usps

我正在尝试使用Javascript的XMLHTTP协议使USPS地址验证API正常工作。我正在成功发送数据,但USPS引擎不喜欢什么。我通过xmlhttp.responseText获得了以下回复:

  

<Error><Number>80040B19</Number><Description>XML Syntax Error: Please check the XML request to see if it can be parsed.</Description><Source>USPSCOM::DoAuth</Source></Error>

下面是我用来测试构造的代码。您可以看到复制出XML的alert(),我已通过在线解析检查程序成功运行。我已经回顾了很多与cURL等有关的SO问题,但我没有找到与XMLHTTP有关的问题。但是,说实话,我不确定XMLHTTP是什么问题。它正在发送和接收。我是如何构建XML请求的问题?我正在密切建模API示例。谢谢!

<html><script language="javascript">
var xmlhttp;
var formData = new FormData();
formData.append('API', 'Verify');
$xml = '<AddressValidateRequest USERID="XXXX">\
<Address>\
<Address1></Address1>\
<Address2>450 Bauchet St.</Address2>\
<City>Los Angeles</City>\
<State>CA</State>\
<Zip5></Zip5>\
<Zip4></Zip4>\
</Address>\
</AddressValidateRequest>';

formData.append('XML', $xml);
alert( $xml+"\n\n");
if(window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
} else {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
    console.log(xmlhttp.readyState);
    console.log(xmlhttp.status);
    if(xmlhttp.readyState==4 && xmlhttp.status==200){
        alert(xmlhttp.responseText);
        if(xmlhttp.responseText == 'false'){ alert(xmlhttp.responseText); }
    }
}
xmlhttp.onerror = function () { console.error(xmlhttp.statusText); }
xmlhttp.open("POST", 'http://production.shippingapis.com/ShippingAPI.dll');
xmlhttp.send(formData);
</script> </html>

该服务的界面和注册来自here。 USPS.com。

1 个答案:

答案 0 :(得分:1)

尝试使用“GET”作为METHOD? USPS API非常易于使用。 POST时确保正确设置正文