我正在尝试使用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。
答案 0 :(得分:1)
尝试使用“GET”作为METHOD? USPS API非常易于使用。 POST时确保正确设置正文