liian_q 2015-11-20 03:01 采纳率: 0%
浏览 5546

微信公众号多客服 获取多客服老是失败

接口放回的错 是accesstoken失效了 可是我accesstoken是先获取存到数据库 然后隔7000秒重新获取 求大神帮我看看
这是获取在线客服的方法

 public List<String> getOnlineKefu(AccessToken token) {
        GET_KEFU_ONLINE = GET_KEFU_ONLINE.replace("ACCESS_TOKEN",
                token.getToken());
        List<String> kefus = new ArrayList<String>();
        try {
            JSONObject object = HttpRequest.HttpGet(GET_KEFU_ONLINE);
            logger.debug("##getOnlineKefu获取的初始json##"+object);
            JSONArray array = (JSONArray) object.get("kf_online_list");
            if (null == array) {
                return null;
            } else {
                for (int i = 0; i < array.size(); i++) {
                    Kefu kefu = JSON.parseObject(
                            JSON.toJSONString(array.get(i)), Kefu.class);
                    kefus.add(kefu.getKf_account());
                }
                return kefus;
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }

这是获取AccessToken的方法

 public AccessToken getATFromWeChat(String appid, String appsecret){
        String requestUrl = access_token_url.replace("APPID", appid)
                .replace("APPSECRET", appsecret);
        try {
            JSONObject object = HttpRequest.HttpGet(requestUrl);
            AccessToken ACCESSTOKEN = new AccessToken();
            ACCESSTOKEN.setToken(object.getString("access_token"));
            ACCESSTOKEN.setExpiresIn(object.getInteger("expires_in"));
            ACCESSTOKEN.setGettime(new Date().getTime());
            return ACCESSTOKEN;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
    /**
     * 获取accesstoken并持久化
     * @param appid
     * @param appsecret
     * @return
     */
    public AccessToken getAT(String appid, String appsecret){
        AccessToken token = service.findAT();
        if(null==token){
            token = getATFromWeChat(appid, appsecret);
            service.insertAT(token);
            return token;
        }
        else{
            long gt = token.getGettime();
            long now = new Date().getTime();
            if((now-gt)>7000000){
                token = getATFromWeChat(appid, appsecret);
                service.updateAT(token);
                return token;
            }else{
                return token;
            }
        }
    }

这是多客服转发设置部分代码

 AccessToken token = chatUtil.getAT(Content.APPID, Content.APPSECRET);
                logger.debug("##多客服转发获取的token##"+token);
                logger.debug("##此时的index##"+index);
                List<String> kefus = new ArrayList<String>();
                if(token!=null){
                    // 获取在线客服列表
                    kefus = getOnlineKefu(token);
                    logger.debug("##在线客服列表##"+kefus);
                    //获取当前用户基本信息
                    JSONObject object = getInfo(fromUserName,token);
                    logger.debug("##用户基本信息##"+object);
                    //保存信息到数据库
                    logger.debug("##查询数据库的结果##"+service.findInfoByOp(fromUserName));
                    if(null==service.findInfoByOp(fromUserName)){
                        service.saveWeChatInfo(setData(object));
                    }
                }
  • 写回答

3条回答 默认 最新

  • zlm285998230 2016-01-21 10:11
    关注

    我也是 获取在线客服 老是失败

    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境