Ich versuche, USPS-Versandzoneninformationen anzuzeigen, aber der Abschnitt der USPS-Site, von dem ich diese Informationen entfernt habe, ist fehlerhaft seit Monaten und ich frage mich, ob jemand einen anderen Weg kennt, um es in einem analysierbaren Format zu bekommen?
Die Seite, die seit Monaten kaputt ist, ist hier: http://postcalc.usps.gov/Zonecharts/ZoneChartPrintable.aspx?zipcode=931
Sie haben hier dasselbe Diagramm in einem nicht so analysierbaren Format: http://postcalc.usps.gov/Zonecharts/
Ich speichere diese Informationen zwischen, damit sie nicht ständig angefordert werden müssen, aber der Cache wird gelegentlich gelöscht, da sich die Zonen ändern von Zeit zu Zeit.
Antwort
Hier ist der Code, mit dem ich die JSON-Daten abrufe, die 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; }
Kommentare
- Das ist perfekt, danke. Ich hatte nicht war schon eine Weile nicht mehr da, um ihre neue Site zu überprüfen, aber ich bin froh, dass sie jetzt eine JSON-Zeichenfolge bereitstellen, anstatt den HTML-Code analysieren zu müssen.
Antwort
Sie können die Zone auch basierend auf der Entfernung zwischen dem Koordinatenursprung-SCF (Sectional Center Facility) und dem Ziel-SCF
Zone 1 berechnen : Nicht lokale Zonen innerhalb eines Radius von 50 Meilen um den Ursprungspunkt
Zone 2: Radius 51-150 Meilen
Zone 3: Radius 151-100 Meilen
Zone 4: Radius 301-600 Meilen
Zone 5: Radius 601-1.000 Meilen
Zone 6: Radius 1001-1400 Meilen
Zone 7: 1401-1800 Meilen Radius
Zone 8: 1801 Meilen und mehr
Zone 9: Postleitzahlen, die für außergewöhnliche Netzwerkbedingungen zugewiesen wurden
- SCF für jede Postleitzahl hier: https://fast.usps.com/fast/fastApp/resources/labelListFiles.action
- Sie können die Koordinaten des SCF abrufen über die Google API
- Sobald Sie die Koordinaten haben, gibt es viele Möglichkeiten um den Abstand zwischen ihnen zu berechnen
- Sie können auch die Koordinaten überspringen und einfach den Abstand zwischen den Postleitzahlen des SCF selbst berechnen (nicht die Postleitzahlen, die er bedient)
Antwort
Der USPS verkauft hier ein vollständiges Zonendiagramm für alle Kombinationen von bis bis zip für 63 USD: https://postalpro.usps.com/operations/zone-charts
Ich habe einen gesendet, da ich seit Monaten keine Informationen mehr an anderer Stelle finden konnte.