Ich habe einige Möglichkeiten gefunden, dies mit webbasierten APIs zu tun. Ich denke, der US-Postdienst wäre der genaueste, da Postleitzahlen ihre Sache sind, aber Ziptastic sieht viel einfacher aus.
Verwendung der HTTP / XML-API des US-Postdienstes
Laut dieser Seite auf der US Postal Service-Website, die ihre XML-basierte Web-API dokumentiert , insbesondere Abschnitt 4.0 (Seite 22) dieses PDF-Dokuments , haben sie eine URL, über die Sie eine XML-Anfrage mit einer 5-stelligen Postleitzahl senden können Antworten Sie mit einem XML-Dokument, das die entsprechende Stadt und das entsprechende Bundesland enthält.
Laut ihrer Dokumentation würden Sie Folgendes senden:
http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest>
Und Folgendes würden Sie zurückerhalten:
<?xml version="1.0"?>
<CityStateLookupResponse>
<ZipCode ID="0">
<Zip5>90210</Zip5>
<City>BEVERLY HILLS</City>
<State>CA</State>
</ZipCode>
</CityStateLookupResponse>
USPS nicht verlangen , dass Sie mit ihnen registrieren , bevor Sie die API verwenden können, aber, soweit ich das beurteilen kann, gibt es keine Gebühr für den Zugang ist. Die API verfügt übrigens über einige weitere Funktionen: Sie können die Adressstandardisierung und die Postleitzahlensuche sowie die gesamte Suite aus Tracking, Versand, Etiketten usw. durchführen.
Update: Ab dem 13. August 2017 ist Ziptastic eine kostenpflichtige API und kann hier gefunden werden
Dies ist ein ziemlich neuer Dienst, aber laut Dokumentation müssen Sie lediglich eine GET-Anfrage an http://ziptasticapi.com senden , wie folgt :
GET http://ziptasticapi.com/48867
Und sie geben ein JSON-Objekt zurück, wie folgt:
{"country": "US", "state": "MI", "city": "OWOSSO"}
In der Tat funktioniert es. Sie können dies über eine Befehlszeile testen, indem Sie Folgendes tun:
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
Sie dann zB an (Sie können die Adressenteile