Znalazłem kilka sposobów, aby to zrobić za pomocą internetowych interfejsów API. Myślę, że najdokładniejsza byłaby poczta amerykańska , ponieważ kody pocztowe to ich sprawa, ale Ziptastic wygląda znacznie łatwiej.
Korzystanie z interfejsu API HTTP / XML usługi poczty USA
Zgodnie z tą stroną w witrynie US Postal Service, która dokumentuje ich internetowy interfejs API oparty na XML , a konkretnie w sekcji 4.0 (strona 22) tego dokumentu PDF , mają adres URL, pod który można wysłać żądanie XML zawierające 5-cyfrowy kod pocztowy, a oni odpowiedz, przesyłając dokument XML zawierający odpowiednie miasto i stan.
Zgodnie z ich dokumentacją, oto, co prześlesz:
http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest>
A oto, co otrzymasz z powrotem:
<?xml version="1.0"?>
<CityStateLookupResponse>
<ZipCode ID="0">
<Zip5>90210</Zip5>
<City>BEVERLY HILLS</City>
<State>CA</State>
</ZipCode>
</CityStateLookupResponse>
USPS nie wymagają rejestracji z nimi, zanim będzie można użyć API, ale, o ile mogę powiedzieć, nie ma opłat za dostęp. Nawiasem mówiąc, ich API ma kilka innych funkcji: możesz zrobić standaryzację adresu i wyszukiwanie kodu pocztowego, a także cały zestaw śledzenia, wysyłki, etykiet itp.
Aktualizacja: od 13 sierpnia 2017 Ziptastic jest teraz płatnym interfejsem API i można go znaleźć tutaj
To całkiem nowa usługa, ale zgodnie z ich dokumentacją wygląda na to, że wszystko, co musisz zrobić, to wysłać żądanie GET na adres http://ziptasticapi.com , na przykład:
GET http://ziptasticapi.com/48867
I zwrócą obiekt JSON w następujący sposób:
{"country": "US", "state": "MI", "city": "OWOSSO"}
Rzeczywiście, to działa. Możesz to przetestować z wiersza poleceń, wykonując coś takiego:
curl http://ziptasticapi.com/48867
geocoder.cit.api.here.com/6.2/geocode.json?PostalCode=2400&country=Denmark&app_id={APP_ID}&app_code={APP_CODE}&gen=9
(Możesz podać części adresu )