Tôi đã tìm thấy một số cách để thực hiện việc này với các API dựa trên web. Tôi nghĩ rằng Bưu điện Hoa Kỳ sẽ là chính xác nhất, vì mã Zip là thứ của họ, nhưng Ziptastic trông dễ dàng hơn nhiều.
Sử dụng API HTTP / XML của Bưu điện Hoa Kỳ
Theo trang này trên trang web Bưu điện Hoa Kỳ tài liệu API web dựa trên XML của họ , cụ thể là Phần 4.0 (trang 22) của tài liệu PDF này , họ có một URL để bạn có thể gửi một yêu cầu XML chứa Mã Zip gồm 5 chữ số và họ sẽ trả lời bằng một tài liệu XML có chứa Thành phố và Tiểu bang tương ứng.
Theo tài liệu của họ, đây là những gì bạn sẽ gửi:
http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest>
Và đây là những gì bạn sẽ nhận lại:
<?xml version="1.0"?>
<CityStateLookupResponse>
<ZipCode ID="0">
<Zip5>90210</Zip5>
<City>BEVERLY HILLS</City>
<State>CA</State>
</ZipCode>
</CityStateLookupResponse>
USPS không yêu cầu bạn phải đăng ký với họ trước khi bạn có thể sử dụng API, nhưng, như xa như tôi có thể nói, không có phí để truy cập. Nhân tiện, API của họ có một số tính năng khác: bạn có thể thực hiện Tiêu chuẩn hóa địa chỉ và Tra cứu mã Zip, cũng như toàn bộ bộ theo dõi, vận chuyển, nhãn, v.v.
Cập nhật: Kể từ ngày 13 tháng 8 năm 2017, Ziptastic hiện là một API trả phí và bạn có thể tìm thấy tại đây
Đây là một dịch vụ khá mới, nhưng theo tài liệu của họ, có vẻ như tất cả những gì bạn cần làm là gửi yêu cầu GET tới http://ziptasticapi.com , như sau:
GET http://ziptasticapi.com/48867
Và chúng sẽ trả về một đối tượng JSON dọc theo các dòng:
{"country": "US", "state": "MI", "city": "OWOSSO"}
Thật vậy, nó hoạt động. Bạn có thể kiểm tra điều này từ một dòng lệnh bằng cách làm như sau:
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
(bạn có thể cung cấp những phần địa chỉ )