2017-07-04 24 views
0

我正在尝试使用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。

+0

不可以。这是USPS。我在我的问题中链接了源页面。我很想知道你为什么认为第三方参与?也许这会帮助我找到问题。 – JBH

+0

你不能在看我发布的链接。 [这里又是](https://www.usps.com/business/web-tools-apis/welcome.htm)它是USPS,它是识别shippingapis.com域名的网站。好悲伤,有十几个关于使用这个和cURL的SO问题。你是我见过的第一个质疑其真实性的人。如果你确定我错了,那就给我一个实际的链接,告诉我“真正的”API。因为你是对的,领域很重要。 – JBH

回答

0

尝试使用“GET”作为方法? USPS API非常易于使用。开机时请确保机身正确设置。