sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

车辆违章查询API 封装
https://blog.csdn.net/qq_29246225/article/details/52883206?ABstrategy=codes_snippets_optimize_v3

自己分装的第三方平台希望对大家有用:

  第三方地区查找和违章查询分装:

  1. package com.weshop.web.util;
  2. import java.io.BufferedReader;
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.io.UnsupportedEncodingException;
  8. import java.net.HttpURLConnection;
  9. import java.net.URL;
  10. import java.net.URLEncoder;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. import net.sf.json.JSONObject;
  14. /**
  15. *全国车辆违章调用示例代码 - 聚合数据
  16. *在线接口文档:http://www.juhe.cn/docs/36
  17. **/
  18. @SuppressWarnings({"unchecked","rawtypes"})
  19. public class CarViolationUtil
  20. {
  21. public static final String DEF_CHATSET = "UTF-8";
  22. public static final int DEF_CONN_TIMEOUT = 30000;
  23. public static final int DEF_READ_TIMEOUT = 30000;
  24. public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
  25. //配置您申请的KEY
  26. public static final String APPKEY ="46ade73c94ae1";
  27. //1.获取支持城市参数接口
  28. public static String cityQuery(String city){
  29. String result =null;
  30. String url ="http://v.juhe.cn/wz/citys";//请求接口地址
  31. Map params = new HashMap();//请求参数
  32. params.put("province",city);//默认全部,省份简写,如:ZJ、JS
  33. params.put("dtype","");//返回数据格式:json或xml或jsonp,默认json
  34. params.put("format","");//格式选择1或2,默认1
  35. params.put("callback","");//返回格式选择jsonp时,必须传递
  36. params.put("key",APPKEY);//你申请的key
  37. try {
  38. result =net(url, params, "GET");
  39. JSONObject object = JSONObject.fromObject(result);
  40. if(object.getInt("error_code")==0){
  41. System.out.println(object.get("result"));
  42. }else{
  43. System.out.println(object.get("error_code")+":"+object.get("reason"));
  44. }
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. return result;
  49. }
  50. //2.请求违章查询接口
  51. public static String caryQuery(String city,String hphm,String engineno,String classno){
  52. String result =null;
  53. String url ="http://v.juhe.cn/wz/query";//请求接口地址
  54. Map params = new HashMap();//请求参数
  55. params.put("dtype","json");//返回数据格式:json或xml或jsonp,默认json
  56. params.put("callback","");//返回格式选择jsonp时,必须传递
  57. params.put("key",APPKEY);//你申请的key
  58. params.put("city",city);//城市代码 *
  59. params.put("hphm",hphm);//号牌号码 完整7位 ,需要utf8 urlencode*
  60. params.put("hpzl","");//号牌类型,默认02
  61. params.put("engineno",engineno);//发动机号 (根据城市接口中的参数填写)
  62. params.put("classno",classno);//车架号 (根据城市接口中的参数填写)
  63. try {
  64. result =net(url, params, "GET");
  65. JSONObject object = JSONObject.fromObject(result);
  66. if(object.getInt("error_code")==0){
  67. System.out.println(object.get("result"));
  68. }else{
  69. System.out.println(object.get("error_code")+":"+object.get("reason"));
  70. }
  71. } catch (Exception e) {
  72. e.printStackTrace();
  73. }
  74. return result;
  75. }
  76. //3.接口剩余请求次数查询
  77. public static void getRequest3(){
  78. String result =null;
  79. String url ="http://v.juhe.cn/wz/status";//请求接口地址
  80. Map params = new HashMap();//请求参数
  81. params.put("key",APPKEY);//应用APPKEY(应用详细页查询)
  82. params.put("dtype","");//返回数据的格式,xml或json,默认json
  83. try {
  84. result =net(url, params, "GET");
  85. JSONObject object = JSONObject.fromObject(result);
  86. if(object.getInt("error_code")==0){
  87. System.out.println(object.get("result"));
  88. }else{
  89. System.out.println(object.get("error_code")+":"+object.get("reason"));
  90. }
  91. } catch (Exception e) {
  92. e.printStackTrace();
  93. }
  94. }
  95. public static void main(String[] args)
  96. {
  97. System.out.println(CarViolationUtil.cityQuery("SX"));
  98. }
  99. /**
  100. *
  101. * @param strUrl 请求地址
  102. * @param params 请求参数
  103. * @param method 请求方法
  104. * @return 网络请求字符串
  105. * @throws Exception
  106. */
  107. public static String net(String strUrl, Map params,String method) throws Exception {
  108. HttpURLConnection conn = null;
  109. BufferedReader reader = null;
  110. String rs = null;
  111. try {
  112. StringBuffer sb = new StringBuffer();
  113. if(method==null || method.equals("GET")){
  114. strUrl = strUrl+"?"+urlencode(params);
  115. }
  116. URL url = new URL(strUrl);
  117. conn = (HttpURLConnection) url.openConnection();
  118. if(method==null || method.equals("GET")){
  119. conn.setRequestMethod("GET");
  120. }else{
  121. conn.setRequestMethod("POST");
  122. conn.setDoOutput(true);
  123. }
  124. conn.setRequestProperty("User-agent", userAgent);
  125. conn.setUseCaches(false);
  126. conn.setConnectTimeout(DEF_CONN_TIMEOUT);
  127. conn.setReadTimeout(DEF_READ_TIMEOUT);
  128. conn.setInstanceFollowRedirects(false);
  129. conn.connect();
  130. if (params!= null && method.equals("POST")) {
  131. try {
  132. DataOutputStream out = new DataOutputStream(conn.getOutputStream());
  133. out.writeBytes(urlencode(params));
  134. } catch (Exception e) {
  135. // TODO: handle exception
  136. }
  137. }
  138. InputStream is = conn.getInputStream();
  139. reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));
  140. String strRead = null;
  141. while ((strRead = reader.readLine()) != null) {
  142. sb.append(strRead);
  143. }
  144. rs = sb.toString();
  145. } catch (IOException e) {
  146. e.printStackTrace();
  147. } finally {
  148. if (reader != null) {
  149. reader.close();
  150. }
  151. if (conn != null) {
  152. conn.disconnect();
  153. }
  154. }
  155. return rs;
  156. }
  157. //将map型转为请求参数型
  158. public static String urlencode(Map<String,Object>data) {
  159. StringBuilder sb = new StringBuilder();
  160. for (Map.Entry i : data.entrySet()) {
  161. try {
  162. sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
  163. } catch (UnsupportedEncodingException e) {
  164. e.printStackTrace();
  165. }
  166. }
  167. return sb.toString();
  168. }
  169. }


地区查找:

  1. /**
  2. * 用户|:违章查询地区
  3. * @param province :省 (如:陕西-SX 北京-BJ)
  4. * @param city 市 (如:西安)
  5. * @return
  6. */
  7. @ResponseBody
  8. @RequestMapping(value="/car/cityQuery", method={RequestMethod.GET, RequestMethod.POST})
  9. public ReturnData cityQuery(String province_code,String city,String token){
  10. TokenDate tokendate = (TokenDate) TokenFailureUtils.TokenTme(token);
  11. if(tokendate==null){
  12. return new ReturnData(200,"当前用户失效,请重新登录!","");
  13. }
  14. Map map = new HashMap();
  15. String mm = null;
  16. String objectss = CarViolationUtil.cityQuery(province_code);
  17. if(JSONObject.fromObject(objectss).get("resultcode").equals("200")){
  18. JSONObject object1 = (JSONObject) JSONObject.fromObject(objectss).get("result");
  19. JSONObject object2 =(JSONObject) JSONObject.fromObject(object1).get(province_code);
  20. JSONArray objects =(JSONArray) JSONObject.fromObject(object2).get("citys");
  21. for(int i=0;objects.size()>i;i++){
  22. JSONObject jobj = (JSONObject) objects.get(i);
  23. if(city.equals(jobj.get("city_name"))){
  24. mm =(String) jobj.get("city_code");
  25. break;
  26. }
  27. }
  28. System.out.println(mm);
  29. map.put("city_code", mm);
  30. }
  31. if(mm==null||mm.equals("")){
  32. return new ReturnData(500,"该地区暂时不提供查询服务","");
  33. }
  34. return new ReturnData(ErrorCode.SUCCESS_.getCode(),ErrorCode.SUCCESS_.getMessage(),map);
  35. }

违章查询:
  1. /**
  2. * 用户:车辆违章查询
  3. * @param city
  4. * @param carNumber
  5. * @param engine_number
  6. * @return
  7. */
  8. @ResponseBody
  9. @RequestMapping(value="/car/carViolation", method={RequestMethod.GET, RequestMethod.POST})
  10. public ReturnData carViolation(String token ,String city_code ,String carNumber,String engine_number,String carFrameNum){
  11. TokenDate tokendate = (TokenDate) TokenFailureUtils.TokenTme(token);
  12. if(tokendate==null){
  13. return new ReturnData(200,"当前用户失效,请重新登录!","");
  14. }
  15. String carinfo = CarViolationUtil.caryQuery(city_code, carNumber, engine_number,carFrameNum);
  16. List<Map<String,Object>> mapList = new ArrayList<Map<String,Object>>();
  17. if(JSONObject.fromObject(carinfo).get("resultcode").equals("200")){
  18. JSONObject object1 = (JSONObject) JSONObject.fromObject(carinfo).get("result");
  19. // JSONObject object2 =(JSONObject) JSONObject.fromObject(object1).get("lists");
  20. JSONArray objects =(JSONArray) JSONObject.fromObject(object1).get("lists");
  21. for(int i=0;objects.size()>i;i++){
  22. Map<String,Object> map = new HashMap<String,Object>();
  23. JSONObject jobj = (JSONObject) objects.get(i);
  24. map.put("date", jobj.get("date")); //违章时间
  25. map.put("area", jobj.get("area")); //违章地点
  26. map.put("act", jobj.get("act")); //违章行为
  27. map.put("fen", jobj.get("fen")); //违章扣分
  28. map.put("money", jobj.get("money")); //违章罚款
  29. map.put("handled", jobj.get("handled")); //是否处理,1处理 0未处理 空未知
  30. mapList.add(map);
  31. }
  32. }
  33. return new ReturnData(ErrorCode.SUCCESS_.getCode(),ErrorCode.SUCCESS_.getMessage(),mapList);
  34. }





posted on 2022-03-18 18:56  sunny123456  阅读(220)  评论(0编辑  收藏  举报