package com.casic.missiles.nbiot; import com.casic.missiles.util.JsonUtil; import com.casic.missiles.util.StreamClosedHttpResponse; import com.casic.missiles.core.base.response.SuccessResponseData; import com.casic.missiles.util.HttpsUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; /** * Auth: * This interface is used to authenticate third-party systems before third-party systems access open APIs. */ public class Authentication { public static Logger log = LoggerFactory.getLogger(Authentication.class); @SuppressWarnings({ "resource", "unchecked" }) public static SuccessResponseData doAuth(String baseUrl, String appId, String secret) throws Exception { String urlLogin = baseUrl+Constant.APP_AUTH; // Two-Way Authentication HttpsUtil httpsUtil = new HttpsUtil(); try { httpsUtil.initSSLConfigForTwoWay(); } catch (Exception e) { e.printStackTrace(); return new SuccessResponseData(500,null,"https证书文件不存在,连接失败"); } Map<String, String> param = new HashMap<>(); param.put("appId", appId); param.put("secret", secret); StreamClosedHttpResponse responseLogin = httpsUtil.doPostFormUrlEncodedGetStatusLine(urlLogin, param); log.info("NBCUCC_login_response:"+responseLogin.getStatusLine()); log.info(responseLogin.getContent()); //获取状态码 int code = responseLogin.getStatusLine().getStatusCode(); if(code==200){ //resolve the value of accessToken from responseLogin. Map<String, String> data = new HashMap<>(); data = JsonUtil.jsonString2SimpleObj(responseLogin.getContent(), data.getClass()); String accessToken = data.get("accessToken"); return new SuccessResponseData(200,accessToken,"注册设备成功"); }else{ return new SuccessResponseData(code,null,"连接电信平台失败,错误码为"+code); } } }