Ik probeer USPS Shipping Zone-informatie weer te geven, maar het gedeelte van de USPS-site waar ik deze informatie vandaan heb gehaald, is verbroken maanden en ik “vraag me af of iemand een andere manier weet om het in een parseerbaar formaat te krijgen?
De pagina die al maanden kapot is, is hier: http://postcalc.usps.gov/Zonecharts/ZoneChartPrintable.aspx?zipcode=931
Ze hebben hetzelfde diagram in een niet-zo-parseerbare indeling hier: http://postcalc.usps.gov/Zonecharts/
Ik cacheer deze informatie, zodat het niet “constant opgevraagd hoeft te worden, maar het cachegeheugen wordt af en toe gewist omdat de zones veranderen van tijd tot tijd.
Answer
Hier is de code die ik gebruik om de JSON-gegevens op te halen 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; }
Reacties
- Dit is perfect, bedankt. Ik had geen Ik ben al een tijdje terug om hun nieuwe site te beoordelen, maar ik ben blij dat ze nu een JSON-string aanbieden in plaats van de HTML te moeten parseren.
Antwoord
Je kunt de zone ook berekenen op basis van de afstand tussen de coördinaten oorsprong SCF (Sectional Center Facility) en de bestemming SCF
Zone 1 : Niet-lokale zones binnen een straal van 50 mijl rond het punt van herkomst
Zone 2: straal van 51-150 mijl
Zone 3: straal van 151-300 mijl
Zone 4: straal van 301-600 mijl
Zone 5: straal van 601-1.000 mijl
Zone 6: straal van 1001-1400 mijl
Zone 7: Straal van 1401-1800 mijl
Zone 8: 1801 mijl en meer
Zone 9: postcodes toegewezen voor uitzonderlijke netwerkomstandigheden
- U kunt een boete SCF voor elke postcode hier: https://fast.usps.com/fast/fastApp/resources/labelListFiles.action
- U kunt de coördinaten van de SCF ophalen van Google API
- Zodra u de coördinaten heeft, zijn er tal van manieren om de afstand tussen hen te berekenen
- U kunt ook de coördinaten overslaan en gewoon de afstand tussen de postcodes van de SCF zelf berekenen (niet de postcodes die deze bedient)
Answer
De USPS verkoopt hier een volledig zonediagram voor alle van-tot zip-combinaties voor $ 63: https://postalpro.usps.com/operations/zone-charts
Ik heb er een opgestuurd omdat ik dit al maanden nergens anders heb kunnen vinden.