| | |
| | | @Autowired |
| | | private IGDInterfaceService gdInterfaceService; |
| | | |
| | | private String key = "c473445a931ee8c42eef8b63fc3602c5"; |
| | | @Autowired |
| | | private GDKeyManager gdKeyManager; |
| | | |
| | | private JSONArray jsonArray = new JSONArray(); |
| | | |
| | | /** |
| | | * 执行GET请求:key次数用完时自动切换可用key重试 |
| | | */ |
| | | private String doGetWithRetry(String baseUrl) { |
| | | String lastResp = null; |
| | | int maxAttempts = 5; |
| | | for (int i = 0; i < maxAttempts; i++) { |
| | | String key = gdKeyManager.getKey(); |
| | | String url = baseUrl + (baseUrl.contains("?") ? "&" : "?") + "key=" + key; |
| | | String resp = restTemplate.getForObject(url, String.class); |
| | | lastResp = resp; |
| | | JSONObject jsonObject; |
| | | try { |
| | | jsonObject = JSON.parseObject(resp); |
| | | } catch (Exception e) { |
| | | return resp; |
| | | } |
| | | if (GDKeyManager.isWebKeyExhausted(jsonObject)) { |
| | | gdKeyManager.reportExhausted(key); |
| | | continue; |
| | | } |
| | | return resp; |
| | | } |
| | | return lastResp; |
| | | } |
| | | |
| | | /** |
| | | * 执行POST请求(JSON体):key次数用完时自动切换可用key重试 |
| | | */ |
| | | private String doPostJsonWithRetry(String baseUrl, String jsonBody) { |
| | | String lastResp = null; |
| | | int maxAttempts = 5; |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); |
| | | headers.setContentType(type); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON.toString()); |
| | | for (int i = 0; i < maxAttempts; i++) { |
| | | String key = gdKeyManager.getKey(); |
| | | String url = baseUrl + (baseUrl.contains("?") ? "&" : "?") + "key=" + key; |
| | | HttpEntity<String> formEntity = new HttpEntity<>(jsonBody, headers); |
| | | String resp = restTemplate.postForObject(url, formEntity, String.class); |
| | | lastResp = resp; |
| | | JSONObject jsonObject; |
| | | try { |
| | | jsonObject = JSON.parseObject(resp); |
| | | } catch (Exception e) { |
| | | return resp; |
| | | } |
| | | if (GDKeyManager.isWebKeyExhausted(jsonObject)) { |
| | | gdKeyManager.reportExhausted(key); |
| | | continue; |
| | | } |
| | | return resp; |
| | | } |
| | | return lastResp; |
| | | } |
| | | |
| | | /** |
| | | * 执行PATCH请求(JSON体):key次数用完时自动切换可用key重试 |
| | | */ |
| | | private String doPatchJsonWithRetry(String baseUrl, String jsonBody) { |
| | | String lastResp = null; |
| | | int maxAttempts = 5; |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); |
| | | headers.setContentType(type); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON.toString()); |
| | | for (int i = 0; i < maxAttempts; i++) { |
| | | String key = gdKeyManager.getKey(); |
| | | String url = baseUrl + (baseUrl.contains("?") ? "&" : "?") + "key=" + key; |
| | | HttpEntity<String> formEntity = new HttpEntity<>(jsonBody, headers); |
| | | String resp = restTemplate.patchForObject(url, formEntity, String.class); |
| | | lastResp = resp; |
| | | JSONObject jsonObject; |
| | | try { |
| | | jsonObject = JSON.parseObject(resp); |
| | | } catch (Exception e) { |
| | | return resp; |
| | | } |
| | | if (GDKeyManager.isWebKeyExhausted(jsonObject)) { |
| | | gdKeyManager.reportExhausted(key); |
| | | continue; |
| | | } |
| | | return resp; |
| | | } |
| | | return lastResp; |
| | | } |
| | | |
| | | |
| | | @Bean |
| | |
| | | json.put("alert_condition", "enter;leave"); |
| | | json.put("desc", id); |
| | | |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); |
| | | headers.setContentType(type); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON.toString()); |
| | | HttpEntity<String> formEntity = new HttpEntity<>(json.toString(), headers); |
| | | |
| | | String url = "https://restapi.amap.com/v4/geofence/meta?key=" + key; |
| | | String js = restTemplate.postForObject(url, formEntity, String.class); |
| | | String js = doPostJsonWithRetry("https://restapi.amap.com/v4/geofence/meta", json.toString()); |
| | | JSONObject jsonObject = JSON.parseObject(js); |
| | | JSONObject data = jsonObject.getJSONObject("data"); |
| | | String status = data.getString("status"); |
| | |
| | | * 查询以创建的所有电子围栏 |
| | | */ |
| | | public String findElectricFenc(String center, String radius, String points){ |
| | | String url = "https://restapi.amap.com/v4/geofence/meta?key=" + key; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | String url = "https://restapi.amap.com/v4/geofence/meta"; |
| | | String forObject = doGetWithRetry(url); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | JSONObject data = jsonObject.getJSONObject("data"); |
| | | |
| | |
| | | if(page == 1){ |
| | | jsonArray = new JSONArray(); |
| | | } |
| | | String url = "https://restapi.amap.com/v4/geofence/meta?key=" + key + "&page_no=" + page + "&page_size=" + 30; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | String url = "https://restapi.amap.com/v4/geofence/meta?page_no=" + page + "&page_size=" + 30; |
| | | String forObject = doGetWithRetry(url); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | JSONObject data = jsonObject.getJSONObject("data"); |
| | | JSONArray rs_list = data.getJSONArray("rs_list"); |
| | |
| | | json.put("alert_condition", "enter;leave"); |
| | | json.put("desc", id + "围栏更新描述"); |
| | | |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); |
| | | headers.setContentType(type); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON.toString()); |
| | | HttpEntity<String> formEntity = new HttpEntity<>(json.toString(), headers); |
| | | |
| | | String url = "https://restapi.amap.com/v4/geofence/meta?key=" + key + "&gid=" + gid; |
| | | String s = restTemplate.patchForObject(url, formEntity, String.class); |
| | | String url = "https://restapi.amap.com/v4/geofence/meta?gid=" + gid; |
| | | String s = doPatchJsonWithRetry(url, json.toString()); |
| | | System.out.println(s); |
| | | |
| | | // gdInterfaceService.saveData("https://restapi.amap.com/v4/geofence/meta", "更新电子围栏"); |
| | |
| | | diu = "B78F99DD-2496-4A43-843B-172CDA2D9798"; |
| | | } |
| | | locations = locations + "," + (new Date().getTime() / 1000); |
| | | String url = "https://restapi.amap.com/v4/geofence/status?key=" + key + "&diu=" + diu + "&locations=" + locations; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | String url = "https://restapi.amap.com/v4/geofence/status?diu=" + diu + "&locations=" + locations; |
| | | String forObject = doGetWithRetry(url); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | List<String> ids = new ArrayList<>(); |
| | | JSONObject data = jsonObject.getJSONObject("data"); |
| | |
| | | * @return |
| | | */ |
| | | public boolean deleteElectricFenc(String gid){ |
| | | restTemplate.delete("https://restapi.amap.com/v4/geofence/meta?key={1}&gid={2}", key, gid); |
| | | restTemplate.delete("https://restapi.amap.com/v4/geofence/meta?key={1}&gid={2}", gdKeyManager.getKey(), gid); |
| | | System.out.println("删除:" ); |
| | | |
| | | // gdInterfaceService.saveData("https://restapi.amap.com/v4/geofence/meta", "删除电子围栏"); |
| | |
| | | * @return |
| | | */ |
| | | public Map<String, String> getDistance(String origins, String destination, Integer type){ |
| | | String url = "https://restapi.amap.com/v3/distance?key=" + key + "&origins=" + origins + "&destination=" + destination + |
| | | String url = "https://restapi.amap.com/v3/distance?origins=" + origins + "&destination=" + destination + |
| | | "&type=" + type; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | String forObject = doGetWithRetry(url); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | String status = jsonObject.getString("status"); |
| | | |
| | |
| | | * @return |
| | | */ |
| | | public Map<String, String> getDriving(String origins, String destination, String waypoints){ |
| | | String url = "https://restapi.amap.com/v3/direction/driving?key=" + key + "&origin=" + origins + "&destination=" + destination + |
| | | String url = "https://restapi.amap.com/v3/direction/driving?origin=" + origins + "&destination=" + destination + |
| | | "&waypoints=" + waypoints + "&extensions=base&strategy=0"; |
| | | String forObject = restTemplate.getForObject(url, String.class); |
| | | String forObject = doGetWithRetry(url); |
| | | JSONObject jsonObject = JSON.parseObject(forObject); |
| | | String status = jsonObject.getString("status"); |
| | | |