| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package cn.com.lzt.car.api;
- import cn.com.lzt.common.util.Constants;
- import cn.com.lzt.common.util.HttpUtil;
- import cn.com.lzt.message.send.util.MD5;
- import com.alibaba.fastjson.JSONObject;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.log4j.Logger;
- import org.gavaghan.geodesy.Ellipsoid;
- import org.gavaghan.geodesy.GeodeticCalculator;
- import org.gavaghan.geodesy.GeodeticCurve;
- import org.gavaghan.geodesy.GlobalCoordinates;
- import java.io.UnsupportedEncodingException;
- import java.util.ArrayList;
- import java.util.List;
- public class CarOnlineUtils {
- private static final Logger logger = Logger.getLogger(CarOnlineUtils.class);
- private static String accessTokenCzsh = null;
- private static String accessToken = null;
- private static long tokenTime = 0;
- private static long tokenTimeCzsh = 0;
- public static String getAccessToken() {
- //time 以秒为单位
- long time = System.currentTimeMillis() / 1000;
- //token不存在,或者过期,则重新生成token
- //token有效期为7200s,为安全起见,超过7000s则重新申请
- if (StringUtils.isEmpty(accessToken) || time - tokenTime > 7000) {
- List<Object> list = genAccessToken(
- Constants.getProperty("CAR_FLEET_ACCOUNT"), Constants.getProperty("CAR_FLEET_SECRET"));
- if(list != null){
- accessToken = (String)list.get(0);
- tokenTime = (long)list.get(1);
- }
- }
- return accessToken;
- }
- // public static String getAccessTokenCzsh() {
- // //time 以秒为单位
- // long time = System.currentTimeMillis() / 1000;
- // //token不存在,或者过期,则重新生成token
- // //token有效期为7200s,为安全起见,超过7000s则重新申请
- // if (StringUtils.isEmpty(accessTokenCzsh) || time - tokenTimeCzsh > 7000) {
- // List<Object> list = genAccessToken("城智生活", "dsgongyong2019");
- // if(list != null){
- // accessTokenCzsh = (String)list.get(0);
- // tokenTimeCzsh = (long)list.get(1);
- // }
- // }
- // return accessTokenCzsh;
- // }
- private static List<Object> genAccessToken(String account, String secret) {
- //time 以秒为单位
- long time = System.currentTimeMillis() / 1000;
- // String signature = MD5.md5(MD5.md5("dsgongyong2019") + time);
- String signature = MD5.md5(MD5.md5(secret) + time);
- String url = null;
- try {
- // url = "http://api.gpsoo.net/1/auth/access_token?account="+java.net.URLEncoder.encode("城智生活", "UTF8")+"&time=" + time + "&signature=" + signature;
- url = "http://api.gpsoo.net/1/auth/access_token?account="
- + java.net.URLEncoder.encode(account, "UTF8") + "&time=" + time + "&signature=" + signature;
- } catch (UnsupportedEncodingException e) {
- logger.error(e.getMessage());
- return null;
- }
- JSONObject res = HttpUtil.httpRequest(url, "GET", null);
- logger.error(res.toJSONString());
- if (res.get("ret").toString().equals("0")) {
- String accessToken = res.get("access_token").toString();
- long tokenTime = time;
- List<Object> list = new ArrayList();
- list.add(accessToken);
- list.add(tokenTime);
- return list;
- } else {
- logger.error("未获取到汽车在线access_token" + ",url:" + url);
- }
- return null;
- }
- public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) {
- //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
- GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
- return geoCurve.getEllipsoidalDistance();
- }
- }
|