我目前正在尝试使用United States Postal Service's Web Tools API来验证用户的地址。但是,无论我使用何种信息组合或连接到Web服务的技术,我都会遇到相同的例外:
Unable to connect to the remote service
具有相同的内部异常
A connection attempt failed because the connected party did not properly respond after
a period of time, or established connection failed because connected host has failed to
respond 56.0.34.43:443
然而,我第一次使用C#WebClient
对象。谁能看到我在这里做错了什么?
private const string USPS_USERID = "xxxxxxx";
private const string BASEURL = "https://secure.shippingapis.com/ShippingAPITest.dll";
try
{
string USPS = BASEURL + "?API=Verify&XML=<AddressValidateRequest USERID=\"" + USPS_USERID + "\">";
USPS += "<Address ID='0'>";
USPS += "<Address1>" + addressInfo[0] + "</Address1>";
USPS += "<Address2>" + addressInfo[1] + "</Address2>";
USPS += "<City>" + addressInfo[2] + "</City>";
USPS += "<State>" + addressInfo[3] + "</State>";
USPS += "<Zip5>" + addressInfo[4] + "</Zip5>";
USPS += "<Zip4></Zip4>";
USPS += "</Address></AddressValidateRequest>";
WebClient wsClient = new WebClient();
byte[] responseData = wsClient.DownloadData(USPS);
string response = string.Empty;
foreach (byte item in responseData)
{
response += (char) item;
}
return Json(response, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return null;
}
答案 0 :(得分:2)
USPS网站已关闭!所以他们可能在服务器上遇到问题。
答案 1 :(得分:2)
对于邮寄地址(在美国),USPS肯定是权威。但是,我从很多同行那里听说他们的API有点缺乏。由于USPS API不提供SLA(服务级别协议),因此他们可以随时执行例行或非日常维护。所以,如果你绝对必须使用USPS API,那么你就会遇到他们给你的任何东西以及他们的停机时间。
如果您可以选择考虑其他地址验证API服务,快速谷歌搜索“地址验证API”将向您展示一些最好的地址验证API服务。你有从免费到非常昂贵的选择。
所以,虽然我不能说USP API失败的原因,但希望我能引导您获得更可靠的服务。我听说过easypost.com的好消息,这是一项免费服务。您还拥有德克萨斯A&amp; M大学,其免费address verification service。因此,无论您找到什么样的服务,请确保您找到一个(免费或付费)实际拥有SLA且保证正常运行时间能够满足您需要的服务。
我已经在SmartyStreets工作了将近三年,因此我对地址验证了解了一两件事。