Estou tentando exibir as informações da zona de envio do USPS, mas a seção do site do USPS que usei para extrair essas informações foi quebrada há meses e estou me perguntando se alguém conhece outra maneira de obtê-lo em um formato analisável?
A página que foi quebrada por meses está aqui: http://postcalc.usps.gov/Zonecharts/ZoneChartPrintable.aspx?zipcode=931
Eles têm o mesmo gráfico em um formato não muito analisável aqui: http://postcalc.usps.gov/Zonecharts/
Eu coloco em cache essas informações para que não tenham que ser solicitadas constantemente, mas o cache é limpo ocasionalmente, já que as zonas mudam de vez em quando.
Resposta
Aqui está o código que uso para buscar os dados JSON que preenchem 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; }
Comentários
- Isso é perfeito, obrigado. Eu não não volto para revisar seu novo site há algum tempo, mas estou feliz por eles servirem uma string JSON agora em vez de ter que analisar o HTML.
Resposta
Você também pode calcular a zona com base na distância entre as coordenadas de origem SCF (Sectional Center Facility) e o destino SCF
Zona 1 : Zonas não locais em um raio de 50 milhas do ponto de origem
Zona 2: raio de 51-150 milhas
Zona 3: raio de 151-300 milhas
Zona 4: raio de 301-600 milhas
Zona 5: raio de 601-1.000 milhas
Zona 6: raio de 1001-1400 milhas
Zona 7: Raio de 1401-1800 milhas
Zona 8: 1801 milhas e mais
Zona 9: CEPs atribuídos para circunstâncias de rede excepcionais
- Você pode multar SCF para cada código postal aqui: https://fast.usps.com/fast/fastApp/resources/labelListFiles.action
- Você pode obter as coordenadas do SCF da API do Google
- Depois de ter as coordenadas, existem várias maneiras para calcular a distância entre eles
- Você também pode pular as coordenadas e apenas calcular a distância entre os CEPs do próprio SCF (não os CEPs que serve)
Resposta
O USPS vende um gráfico de zona completa para todas as combinações de para zip por $ 63 aqui: https://postalpro.usps.com/operations/zone-charts
Eu pedi uma vez que não consegui encontrar informações sobre isso em nenhum outro lugar há meses.