Я пытаюсь вызвать API проверки адреса USPS из скрипта Google Apps. Для этого требуется XML, с которым я неопытен по сравнению с JSON. Вот еще один похожий вопрос stackoverflow (Как получить тарифы на доставку внутри страны через API USPS с помощью скрипта Google Apps?), и я дописал его до буквы "t", но он достаточно отличается и адаптирован для API проверки адреса USPS, у меня не работает. Я подписался на идентификатор пользователя и получил подтверждение от USPS.
Вот документация API проверки адреса USPS: https://www.usps.com/business/web-tools-apis/address-information-api.htm#_Toc34052588.
Вот мой код скрипта приложений (с измененным идентификатором пользователя USPS для конфиденциальности):
var site = 'https://secure.shippingapis.com/ShippingAPI.dll';
var userid = "999ABCDE9999";
var payload = {
"API": "Verify",
"XML" : "<AddressValidateRequest USERID=\"" + userid + "\"> \
<Revision>0</Revision> \
<Address ID=\"0\"> \
<Address2>" + address1 + "</Address2> \
<City>" + city1 + "</City> \
<State>" + state1 + "</State> \
<Zip5>" + zip1 + "</Zip5> \
</Address> \
</AddressValidationRequest>"
};
var options = {
method: "POST",
payload: payload
}
Logger.log('payload = ' + JSON.stringify(payload));
var response = UrlFetchApp.fetch(site, options);
var xmlreturn = response.getContentText();
Logger.log('return xml = ' + xmlreturn);
Вот мои логи (адрес также изменен для конфиденциальности):
payload = {"API":"Verify","XML":"<AddressValidateRequest USERID=\"999ABCDE9999\"> <Revision>0</Revision> <Address ID=\"0\"> <Address2>123 AnyStreet Dr</Address2> <City>Forney</City> <State>TX</State> <Zip5>75126</Zip5> </Address> </AddressValidationRequest>"}
return xml = <?xml version="1.0" encoding="UTF-8"?>
<Error><Number>80040B19</Number><Description>XML Syntax Error: Please check the XML request to see if it can be parsed.(B)</Description><Source>USPSCOM::DoAuth</Source></Error>
Это возврат/результат, который я получаю независимо от того, что я пытаюсь сделать. Я думаю, возможно, проблема может заключаться в том, что payload.XML включает USERID=\"999ABCDE9999\" вместо того, что указано в документации - USERID="999ABCDE9999" (без обратной косой черты), но я не знаю, как получить избавиться от них (и пробовали).
Спасибо за помощь!