'USPS Address Validation API using XML and Javascript
I ran the following code (with my user Id entered):
const xhttp = new XMLHttpRequest();
const url = 'https://secure.shippingapis.com/ShippingAPI.dll?API=Verify';
xhttp.open('GET', url, true);
xhttp.onreadystatechange = (e) => {
if (xhttp.readyState == 4 && xhttp.status == 200) {
console.log('request successful');
console.log(xhttp.responseXML);
}
}
let xml = '<AddressValidateRequest USERID="XXXXXXXXXXXX"><Address><Address1>324 Church St</Address1><Address2></Address2><City>Ray</City><State>ND</State><Zip5>58849</Zip5><Zip4></Zip4></Address></AddressValidateRequest>'
xhttp.send(xml);
This is the response:
<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>
I'm not sure what I'm doing wrong. Is my XML proper? Am I sending it correctly?
Resource: USPS Web Tools API Portal
Solution 1:[1]
It looks like you are passing the XML in the body. According to the USPS Web Tools documentation, the XML payload is passed as a query parameter.
I've refactored you example below.
const xhttp = new XMLHttpRequest();
let xml = '<AddressValidateRequest USERID="XXXXXXX"><Address><Address1>324 Church St</Address1><Address2></Address2><City>Ray</City><State>ND</State><Zip5>58849</Zip5><Zip4></Zip4></Address></AddressValidateRequest>'
const url = 'https://secure.shippingapis.com/ShippingAPI.dll?API=Verify&xml=' + xml;
xhttp.open('GET', url, true);
xhttp.onreadystatechange = (e) => {
if (xhttp.readyState == 4 && xhttp.status == 200) {
console.log('request successful');
console.log(xhttp.responseXML);
}
}
xhttp.send();
Checkout our community project where we've created modern USPS Web Tools API documentation
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Sid Maestre |