Ich habe mehrere Möglichkeiten gefunden, dies mit webbasierten APIs zu tun. Ich denke, die US-Postdienst wäre am genauesten, da Postleitzahlen ihr Ding sind, aber Ziptastisch sieht viel einfacher aus.
Verwendung der US Postal Service HTTP/XML API
Nach diesem Seite auf der Website des US Postal Service, die ihre XML-basierte Web-API dokumentiert insbesondere Abschnitt 4.0 (Seite 22) von dieses PDF-Dokument Sie haben eine URL, an die Sie eine XML-Anfrage mit einer 5-stelligen Postleitzahl senden können, und sie werden mit einem XML-Dokument antworten, das die entsprechende Stadt und den Staat enthält.
Nach den Unterlagen des Unternehmens müssten Sie Folgendes senden:
http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest>
Und hier ist, was Sie zurückbekommen würden:
<?xml version="1.0"?>
<CityStateLookupResponse>
<ZipCode ID="0">
<Zip5>90210</Zip5>
<City>BEVERLY HILLS</City>
<State>CA</State>
</ZipCode>
</CityStateLookupResponse>
USPS tut verlangen, dass man sich bei ihnen registriert, bevor man die API nutzen kann, aber soweit ich das beurteilen kann, ist der Zugang kostenlos. Die API bietet übrigens noch einige andere Funktionen: Sie können Adressstandardisierung und Postleitzahlensuche sowie die gesamte Palette von Sendungsverfolgung, Versand, Etiketten usw. nutzen.
Die Verwendung der Ziptastic HTTP/JSON API ( nicht mehr unterstützt )
Update: Seit dem 13. August 2017 ist Ziptastic nun eine kostenpflichtige API und kann gefunden werden aquí
Es handelt sich um einen ziemlich neuen Dienst, aber nach der Dokumentation sieht es so aus, als müssten Sie nur eine GET-Anfrage an http://ziptasticapi.com , etwa so:
GET http://ziptasticapi.com/48867
Und sie geben ein JSON-Objekt zurück, das in etwa so aussieht:
{"country": "US", "state": "MI", "city": "OWOSSO"}
In der Tat, es funktioniert. Sie können dies von einer Befehlszeile aus testen, indem Sie etwas wie folgt tun:
curl http://ziptasticapi.com/48867