效果:

 public static void main(String[] args) {System.out.println(getPostCodeByAddr("广东省深圳市宝安区西乡街道"));System.out.println(getPostCodeByAddr("安徽省安庆市宿松县孚玉镇"));}

输出:

13:50:09.864 [main] INFO com.oc.mall.cloud.mall.common.util.PostCodeUtil - response = {"su":true,"errcode":0,"rs":[{"ADDR":"广东省深圳市宝安区西乡街道共乐华丰工业区","POSTCODE":"518102"},{"ADDR":"广东省深圳市宝安区西乡街道共乐华丰科技园","POSTCODE":"518102"},{"ADDR":"广东省深圳市宝安区西乡街道凤凰城","POSTCODE":"518102"}],"pageinfo":{"CURRENTPAGE":1,"TOTALPAGE":1,"ITEMCOUNT":3},"searchkey":"广东省深圳市宝安区西乡街道","checkcode":true,"now_num":3,"pageshtml":""}
518102
13:50:10.067 [main] INFO com.oc.mall.cloud.mall.common.util.PostCodeUtil - response = {"su":true,"errcode":0,"rs":[{"ADDR":"安徽省安庆市宿松县孚玉镇孚玉路","POSTCODE":"246501"},{"ADDR":"安徽省安庆市宿松县孚玉镇东北新城","POSTCODE":"246501"},{"ADDR":"安徽省安庆市宿松县孚玉镇六米街","POSTCODE":"246501"}],"pageinfo":{"CURRENTPAGE":1,"TOTALPAGE":1,"ITEMCOUNT":3},"searchkey":"安徽省安庆市宿松县孚玉镇","checkcode":true,"now_num":3,"pageshtml":""}
246501

工具类代码:


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.client.RestTemplate;import java.util.Optional;/*** 邮编获取工具类*/
@Slf4j
public class PostCodeUtil {private static final String URL_PREFIX = "http://cpdc.chinapost.com.cn/web/index.php?m=postsearch&c=index&a=ajax_addr&searchkey=";/*** 通过地址获取邮编信息* @param addr -> 地址* @return postcode -> 邮编*/public static String getPostCodeByAddr(String addr) {RestTemplate restTemplate = new RestTemplate();String response = restTemplate.getForObject(URL_PREFIX + addr, String.class);log.info("response = {}", StringEscapeUtils.unescapeJava(response));JSONObject jsonResp = JSON.parseObject(response);return Optional.ofNullable(jsonResp).map(jsonObject -> jsonObject.getJSONArray("rs")).filter(jsonArray -> jsonArray.size() > 0)// 地址不精确导致找到多个默认取第一个.map(jsonArray -> jsonArray.getJSONObject(0)).map(jsonObject -> jsonObject.getString("POSTCODE")).orElse(StringUtils.EMPTY);}}

输入地址,获取邮编的工具类相关推荐

  1. 根据地址获取邮编工具类

    根据地址获取邮编工具类 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok. ...

  2. java外部接口图解_java代码实现访问网络外部接口并获取数据的工具类详解

    java代码实现访问网络外部接口并获取数据的工具类 工具类代码,可以直接copy使用 package com.yqzj.util; import org.apache.log4j.LogManager ...

  3. android 获取手机信息工具类

    package com.yqy.yqy_listviewheadview;import android.content.Context; import android.telephony.Teleph ...

  4. IPv6 地址获取方式及工具

    IPv6 地址获取方式及工具 配置 make config ----------> kernel config ------------>networking support ------ ...

  5. WPF TextBox 允许输入数字及字母的工具类

    目录 WPF TextBox 允许输入数字及字母的工具类 工具代码 如何使用 WPF TextBox 允许输入数字及字母的工具类 WPF TextBox 仅允许数字.数字及小数点.字母及数字等进行输入 ...

  6. java获取真实ip工具类

    场景 有的时候我们需要获取客户端的真实ip,用来实现ip白名单,和黑名单的配置! ip工具类如下 package com.meeno.framework.utils;import javax.serv ...

  7. 百度地图——导航(地理编码输入地址获取经纬度)

    最近自己在学习百度地图和讯飞语音,这里自己整理点导航方面的.我用的是Android studio 可能和eclipse有点不一样但大体差不多. 一.主要文件 1.如何获取密钥等步骤自行查询百度官网.. ...

  8. 获取SpringBean对象工具类

    #获取SpringBean工具类 SpringBeanUtil代码如下: package com.meeno.wzq.util;import org.springframework.beans.Bea ...

  9. java使用Calendar类获取常用简单工具类

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 在工作中,我们经常会用到时间相关的.比如月初.月末.年初.年末.指定月份所在季度的季末.当前时间加X天.x月.x年等这 ...

最新文章

  1. python npz文件_numpy的文件存储 .npy .npz 文件
  2. 支持大数据渲染下拉列表组件开发 SuperSelect(基于antd Select)
  3. zhlan--Python中的字典遍历方法 字典取值
  4. kafka修改分区数_Kafka笔记
  5. 费用流 ZOJ 3933 Team Formation
  6. superset中的json数据转csv
  7. python redis模块connectionerror_ConnectionError:Error 2连接到Python/Django Redis中的unix套接字...
  8. 杭州电子科技大学计算机专硕表数二,杭州电子科技大学 计算机学院 2016级计算机技术(专硕)培养方案...
  9. 复古多变“格子控”混搭 夏季继续魅力四射
  10. c语言水仙桃树编程,辰颐物语编辑部整理:春季适合种植哪些花卉品种?樱花和桃花怎么区分?...
  11. Mozilla正修复Firefox遗留8年的漏洞
  12. Vancouver wechat
  13. windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放...
  14. IDEA 插件开发,显示气泡
  15. 遥感原理与应用总结——第五章:遥感图像几何处理
  16. 浙大翁凯老师Java课堂学习记录(第三周)
  17. python中开根号函数_用二分法定义平方根函数(Bisection method Square Root Python)
  18. 我的是CentOS6.3+MySQL5.1.57。重启了一次服务器后,使用 mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect
  19. 【问链财经-区块链基础知识系列】 第四十五课 一文读懂保理业务的操作流程
  20. 云原生 | 混沌工程工具 ChaosBlade Operator Pod 篇(文末赠书)

热门文章

  1. 1 行 == 12 磅
  2. 一篇好文,以在迷茫时阅读
  3. 字节流和字符流简单操作
  4. 大数据部门组织架构以及相关团队职能分析
  5. aap渗透_一次App 渗透实战
  6. 修改cpu控制文件init.qcom.post_boot.改调节器
  7. 时间敏感型网络协议解读
  8. NLP进化史系列之语言模型
  9. python用opencv计算汽车间距_计算机视觉:利用OpenCV和Python进行车辆计数详细步调...
  10. Cannot set LC_CTYPE to default locale 解决(make localedata/install-locales )