HTTP请求接口,10分钟内超过100个sessionId将无法调用,10分钟才能销毁处理

 1.调用HTTP请求时,10秒调用一次,10分钟内sessionId生产100个,将不能产生新的sessionId问题,因此需要把sessionId存储起来复用

 2.代码演示

 //存储账号对应ip地址sessionId,时间戳,声明存储

 private Map<String, List<String>> collectionSessionMap = new HashMap<>();

 //存在账号的sessionId等相关信息
                    if (collectionSessionMap.containsKey(siteInfoDTO.getGatewayGrm())) {
                        //获取相关账号的集合
                        List<String> collectionSessionList = collectionSessionMap.get(siteInfoDTO.getGatewayGrm());
                        //获取账号,sessionId里面的时间戳
                        long collectionTimeStamp = Long.parseLong(collectionSessionList.get(2));
                        //账号里面的时间戳加10分钟
                        long collectionTimeAccum = collectionTimeStamp + (10 * 60 * 1000);
                        //判断当前时间大于等于累加过后的时间,超过10分钟销毁存储的信息
                        if (recordTime >= collectionTimeAccum) {
                            //删除map里面的账号相关信息
                            collectionSessionMap.remove(siteInfoDTO.getGatewayGrm());
                            //调用相关地址,账号,密码获取新的账号相关验证信息
                            LoginToCollectDTO loginToCollectDTO = loginAuthInfo(siteInfoDTO);
                            System.out.println("登录后返回值>>>:" + loginToCollectDTO);
                            //获取到的登录验证信息,插入验证信息map里面
                            List<String> verificationInfoList = new ArrayList<>();
                            //添加ip地址
                            verificationInfoList.add(loginToCollectDTO.getCollectAddr());
                            //添加sessionId
                            verificationInfoList.add(loginToCollectDTO.getCollectSessionId());
                            //添加时间戳
                            verificationInfoList.add(String.valueOf(recordTime));
                            //把此账号相关信息插入到map
                            collectionSessionMap.put(siteInfoDTO.getGatewayGrm(), verificationInfoList);
                        }
                        //不存在账号的sessionId等相关信息
                    } else {
                        //调用相关地址,账号,密码获取新的账号相关验证信息
                        LoginToCollectDTO loginToCollectDTO = loginAuthInfo(siteInfoDTO);
                        System.out.println("登录后返回值>>>:" + loginToCollectDTO);
                        //获取到的登录验证信息,插入验证信息map里面
                        List<String> verificationInfoList = new ArrayList<>();
                        //添加ip地址
                        verificationInfoList.add(loginToCollectDTO.getCollectAddr());
                        //添加sessionId
                        verificationInfoList.add(loginToCollectDTO.getCollectSessionId());
                        //添加时间戳
                        verificationInfoList.add(String.valueOf(recordTime));
                        //把此账号相关信息插入到map
                        collectionSessionMap.put(siteInfoDTO.getGatewayGrm(), verificationInfoList);
                    }

 

posted @ 2022-08-11 18:48  码海兴辰  阅读(21)  评论(0)    收藏  举报