我正在尝试使用Javascript的XMLHTTP协议来获取USPS地址验证API。我成功发送数据,但USPS引擎不喜欢某些东西。我通过xmlhttp.responseText
得到如下回应:带有XMLHTTP的USPS API返回错误80040B19
<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>
下面是我使用的测试结构的代码。你可以看到一个alert()
复制出来的XML,我已经通过在线解析器检查成功。我已经回顾了许多与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。
不可以。这是USPS。我在我的问题中链接了源页面。我很想知道你为什么认为第三方参与?也许这会帮助我找到问题。 – JBH
你不能在看我发布的链接。 [这里又是](https://www.usps.com/business/web-tools-apis/welcome.htm)它是USPS,它是识别shippingapis.com域名的网站。好悲伤,有十几个关于使用这个和cURL的SO问题。你是我见过的第一个质疑其真实性的人。如果你确定我错了,那就给我一个实际的链接,告诉我“真正的”API。因为你是对的,领域很重要。 – JBH