| | |
| | | import com.hdl.linkpm.sdk.user.HDLLinkPMUser; |
| | | import com.hdl.linkpm.sdk.user.bean.HDLLoginBean; |
| | | import com.hdl.linkpm.sdk.utils.HDLGsonUtils; |
| | | import com.hdl.linkpm.sdk.utils.HDLSDKLog; |
| | | |
| | | import java.io.IOException; |
| | | import java.nio.charset.Charset; |
| | |
| | | */ |
| | | public class HDLLoginInterceptor implements Interceptor { |
| | | |
| | | private String TAG =HDLLoginInterceptor.class.getName(); |
| | | @NonNull |
| | | @Override |
| | | public Response intercept(@NonNull Chain chain) throws IOException { |
| | | Request request = chain.request(); |
| | | if (!isRefreshTokenHeader(request.headers())) { |
| | | String token = HDLLinkPMUser.getInstance().getAccessToken(); |
| | | HDLSDKLog.i(TAG, "当前请求token:"+token); |
| | | if (!TextUtils.isEmpty(token)) { |
| | | Request processRequest = addToken(request, token); |
| | | Response processResponse = chain.proceed(processRequest); |
| | |
| | | // source2.request(Long.MAX_VALUE); |
| | | // Buffer buffer2 = source2.getBuffer().clone(); |
| | | // String respString2 = buffer2.readString(Charset.defaultCharset()); |
| | | |
| | | //http标准状态码 |
| | | if (401 == response.code() || 402 == response.code() || 403 == response.code()) { |
| | | final String token = refreshToken(); |
| | | if (!TextUtils.isEmpty(token)) { |
| | |
| | | */ |
| | | private String refreshToken() { |
| | | final String cacheRefreshToken = HDLLinkPMUser.getInstance().getRefreshToken(); |
| | | HDLSDKLog.i(TAG, "刷新Token,当前刷新Token是:"+cacheRefreshToken); |
| | | final String regionUrl = HDLCloudUserApi.getRequestUrl(HDLCloudUserApi.POST_LOGIN); |
| | | final OkHttpClient client = HxHttpConfig.getInstance().getClient(); |
| | | Request.Builder builder = new Request.Builder(); |
| | |
| | | BaseInfo<HDLLoginBean> baseInfo = HDLGsonUtils.fromJson(respString, new TypeToken<BaseInfo<HDLLoginBean>>() { |
| | | }.getType()); |
| | | if (baseInfo != null) { |
| | | HDLSDKLog.i(TAG, "获取到刷新Token的数据,状态码:"+baseInfo.getCode()); |
| | | if (baseInfo.getCode() == HDLCloudCode.SUCCEED) { |
| | | if (baseInfo.getData() != null) { |
| | | HDLLoginBean loginBean = baseInfo.getData(); |