USPS配送ゾーン情報を表示しようとしていますが、この情報を取得するために使用したUSPSサイトのセクションが壊れています。何ヶ月もの間、私は誰かがそれを解析可能な形式で取得する別の方法を知っているかどうか疑問に思っていますか?
何ヶ月も壊れているページはここにあります: http://postcalc.usps.gov/Zonecharts/ZoneChartPrintable.aspx?zipcode=931
ここには、それほど解析できない形式の同じグラフがあります: http://postcalc.usps.gov/Zonecharts/
この情報をキャッシュするので、常にリクエストする必要はありませんが、ゾーンが変更されるため、キャッシュがときどきクリアされます。時々。
回答
これは、 http://postcalc.usps.gov/Zonecharts/ 。
private String getZoneJSON(String zip3Digit) { URL url; HttpURLConnection con; String zoneJSON = null; try { url = new URL("https://postcalc.usps.com/DomesticZoneChart/GetZoneChart?ZIPCode3Digit=" + zip3Digit + "&ExcelFormat=1"); con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"); con.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); con.setRequestProperty("DNT", "1"); con.setInstanceFollowRedirects(false); InputStream h = (InputStream) con.getContent(); BufferedReader r = new BufferedReader(new InputStreamReader(h)); zoneJSON = r.readLine(); } catch(Exception e) { e.printStackTrace(); } return zoneJSON; }
コメント
- これは完璧です、ありがとう。私はしばらくの間、新しいサイトを確認するために戻ってきましたが、HTMLを解析する代わりに、JSON文字列を提供してくれてうれしいです。
回答
座標の起点SCF(郵便集中局)と終点SCFの間の距離に基づいてゾーンを計算することもできます
ゾーン1 :起点から半径50マイル以内の非ローカルゾーン
ゾーン2:半径51〜150マイル
ゾーン3:半径151〜300マイル
ゾーン4:半径301〜600マイル
ゾーン5:半径601〜1,000マイル
ゾーン6:半径1001〜1400マイル
ゾーン7:半径1401〜1800マイル
ゾーン8:1801マイル以上
ゾーン9:例外的なネットワーク状況に割り当てられた郵便番号
- 罰金を科すことができます各郵便番号のSCFは次のとおりです: https://fast.usps.com/fast/fastApp/resources/labelListFiles.action
- SCFの座標を取得できますGoogleAPIから
- 座標を取得したら、さまざまな方法がありますそれらの間の距離を計算するには
- 座標をスキップして、SCF自体の郵便番号(それが提供する郵便番号ではない)間の距離を計算することもできます
回答
USPSは、すべての郵便番号の組み合わせのフルゾーンチャートを63ドルで販売しています: https://postalpro.usps.com/operations/zone-charts
何ヶ月も他の場所で情報を見つけることができなかったので、私は1つを送りました。