2008-09-23 4 views

ответ

9

Если вам нужна только информация в США, Почтовая служба США предоставляет набор веб-сервисов, которые он вызывает WebTools для этой точной вещи. https://www.usps.com/business/web-tools-apis/welcome.htm. Вам нужно будет зарегистрироваться, чтобы иметь возможность их использовать, но как только вы зарегистрируетесь, они действительно просты в использовании. Вы просто отправляете XML-запрос через HTTP, и сервер отправляет ответ XML, и вам просто нужно его распаковать. Запрос

Примера:

http://SERVERNAME/ShippingAPITest.dll?API=Verify&XML=<AddressValidateRequest%20USERID="xxxxxxx"><Address ID="0"><Address1></Address1><Address2>6406 Ivy Lane</Address2><City>Greenbelt</City><State>MD</State><Zip5></Zip5><Zip4></Zip4></Address></AddressValidateRequest> 

Пример ответ:

<?xml version="1.0"?> 
<AddressValidateResponse> 
    <Address ID="0"> 
     <Address2>6406 IVY LN</Address2> 
     <City>GREENBELT</City> 
     <State>MD</State> 
     <Zip5>20770</Zip5> 
     <Zip4>1441</Zip4> 
    </Address> 
</AddressValidateResponse> 

Вот ссылка на техническую документацию: https://www.usps.com/business/web-tools-apis/documentation-updates.htm

+0

Эта ссылка больше недоступна, есть файл или страница с запросом не найдена – 2017-06-04 18:16:47

1

Хороший источник географических данных, в том числе выборок и данных отображения для США - Бюро переписи населения США TIGER Data set. Они больше не отслеживают данные Zip-кода, но у них есть 1999 vintage file.

Для стран список кодов стран ISO является общедоступным.

Мне не известны ресурсы для информации за пределами США.

14

http://www.geonames.org/

Это лучший один я нашел. Они позволяют загружать и размещать веб-сервис самостоятельно, что тоже приятно.

2

Услуги, которые хорошо работают с .Net (поскольку он использует WSDL), являются http://www.webservicex.net. У них есть служба для почтовых индексов США, доступных по адресу http://www.webservicex.net/uszip.asmx. Вы можете просто добавить его в качестве сервиса, а Visual Studio позаботится обо всем остальном. Ответ приходит как ответ XML, поэтому вам придется его разобрать, но вы можете использовать что-то простое, например USZIP.GetInfoByZIP(ZIP).SelectSingleNode("//STATE").InnerText.

Для моего приложения я затем построил кеш-память в памяти данных с использованием XML в следующих направлениях: http://www.15seconds.com/issue/010410.htm. Я использовал XML вместо HashTable или Dictionary(TKey, TValue), потому что я хотел иметь возможность сериализовать его для строки, чтобы сохранить базу данных в качестве пользовательской настройки.