获取token

今天咱们来说说怎么通过代码来获取token获得token的话首先会有甲方提供一些数据给你们类似于这种,token的入参和出参。接着咱们就可以写代码了。/** *获取token *@return */ publicStringgetToken(){ StringshortUrl=WEIXIN_SHORT_TOKEN; //这是一个token的入参url只是…

大家好,又见面了,我是你们的朋友全栈君。

今天咱们来说说怎么通过代码来获取token
获得token的话首先会有甲方提供一些数据给你们

在这里插入图片描述
类似于这种,token的入参和出参。

接着咱们就可以写代码了。

/**
	 * 获取token
	 * @return
	 */
	public String getToken(){
		String shortUrl = WEIXIN_SHORT_TOKEN;	//这是一个token的入参url 只是我把它放到配置文件了。
		logger.info("json_token_short requestUrl:"+ shortUrl);
        String jsonTokenShort = null;
		try {
			jsonTokenShort = httpClientWraper.mockPostJsonNew(shortUrl, null, false);
		} catch (Exception e) {
			e.printStackTrace();
		}
        logger.info("获取jsonTokenShort响应:"+jsonTokenShort);
        Map<String,Object> mapResultShort = (Map)JSON.parse(jsonTokenShort);
//        if (jsonTokenShort.contains("errcode") && !mapResultShort.get("errcode").toString().equals("0")) {
//            throw new GzhBizRuntimeException(mapResultShort.get("errcode").toString(),mapResultShort.get("errmsg").toString());
//        }
        Object tokenShortA = mapResultShort.get("value");
        if(tokenShortA == null){
        	throw new GzhBizRuntimeException(RespCodeEnum.GET_SHORT_TOKEN_ERREO.getRespCode(),
                    RespCodeEnum.GET_SHORT_TOKEN_ERREO.getRespMsg());
        }
        String tokenShortB = mapResultShort.get("value").toString();
        String longUrl = WEIXIN_LONG_TOKEN.concat("dataface/wechatKey?token=") + tokenShortB ;
        logger.info("json_token_long requestUrl:"+ longUrl);
//        String longUrl = String.format(url_template,tokenShort);
//        logger.info("json_token_long requestUrl:"+ longUrl);
        String jsonTokenLong = null;
		try {
			jsonTokenLong = httpClientWraper.mockPostJsonNew(longUrl, null, false);
		} catch (Exception e) {
			e.printStackTrace();
		}
        logger.info("获取jsonTokenShort响应:"+ jsonTokenLong);
        Map<String,Object> mapResultLong = (Map)JSON.parse(jsonTokenLong);
//        if (jsonTokenShort.contains("errcode") && !mapResultLong.get("errcode").toString().equals("0")) {
//            throw new GzhBizRuntimeException(mapResultLong.get("errcode").toString(),mapResultLong.get("errmsg").toString());
//        }
        Object tokenLongA = mapResultLong.get("value");
        if(tokenLongA == null){
        	throw new GzhBizRuntimeException(RespCodeEnum.GET_LONG_TOKEN_ERREO.getRespCode(),
                    RespCodeEnum.GET_LONG_TOKEN_ERREO.getRespMsg());
        }
        String tokenLongB = mapResultLong.get("value").toString();	
        Map<String,Object> mapResult = (Map)JSON.parse(tokenLongB);
        String token = mapResult.get("key").toString();
        tokenMap.put("token", token);
        logger.info("token>>>>>>>>>>>>>>>>>>>>>>>" + token);
        return token;
	}

这个方法就可以获取到token了。
这个是获取了两次,第一次获取短的token,然后第二次获取长的token并使用拼接把短的token也拼接上去。最后才获取到最后的token。获取两次是为了安全。

还有一个提交的工具类 里面有个post提交的方法。我这个入参只能用post访问。

  public String mockPostJsonNew(String url,String parameter,boolean isValid) throws Exception {
		PostMethod postMethod = new PostMethod(url);
		RequestEntity requestEntity;
		if(parameter != null){
			try {
				requestEntity = new StringRequestEntity(parameter,"application/json","UTF-8");
			} catch (UnsupportedEncodingException e) {
				logger.error(e.getMessage());
				throw new Exception(e.getMessage());
			}  
			postMethod.setRequestEntity(requestEntity); 
		}
		return executeMethod(postMethod,isValid);
	}

如果是get提交的话 我也写了个get提交的方法

public  String mockGet(String url) {
        HttpClient httpClient = new HttpClient();
        if(isValid){
            logger.info(">>>>>>>>>>>>>>>开启代理。");
            //设置代理请求
            httpClient.getHostConfiguration().setProxy(proxyAddress,proxyPort);
        } else {
            logger.info(">>>>>>>>>>>>>>>未开启网络代理。");
        }
        HttpMethod getMethod = new GetMethod(url);
        try {
            int statusCode = httpClient.executeMethod(getMethod);
            if (HttpURLConnection.HTTP_OK == statusCode) {
                return execute(getMethod);
            }
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
            throw new GzhBizRuntimeException("-1", e.getMessage(),e);
        }

        return "";
    }
    

你们如果没有设置代理的话,代理这块可以删除掉。

最后…
博主是一枚小白,记录工作上目前对博主而言比较难的问题。
如果错误请私信博主。谢谢,有不懂的也可以找博主哦~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129704.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月14日 下午1:00
下一篇 2022年4月14日 下午1:00


相关推荐

  • Object的notify和notifyAll方法的区别

    Object的notify和notifyAll方法的区别区别 notify 只会唤醒等待该锁的其中一个线程 notifyAll 唤醒等待该锁的所有线程 既然 notify 会唤醒一个线程 并获取锁 notifyAll 会唤醒所有线程并根据算法选取其中一个线程获取锁 那最终结果不都是只有一个线程获取锁吗 那 JDK 为什么还需要做出来这两个方法呢 这两种同步方法本质上会有什么区别 这还要从对象内部锁的调度说起 对象内部锁其实 每个对象都拥有两个池 分

    2026年3月16日
    2
  • 接口测试工具Postman使用实践[通俗易懂]

    接口测试工具Postman使用实践本次chat内容包括:接口的定义接口的分类为何要进行接口测试接口文档示例Postman工具简介借助Postman完成HTTP请求接口测试Postman+Newman+Jenkins实现接口自动化测试一、接口定义软件不同部分之间的交互接口。通常就是所谓的API――应用程序编程接口,其表现的形式是源代码。——[百度百科]

    2022年4月15日
    68
  • Shell之${BASH_REMATCH}

    Shell之${BASH_REMATCH}Shell 之 BASH REMATCH N 双目运算符 它和 以及 具有同样的优先级 如果使用了它 则其右边的字符串就被认为是一个扩展的正则表达式来匹配 如果字符串和模式匹配 则返回值是 0 否则返回 1 如果这个正则表达式有语法错误 则整个条件表达式的返回值是 2 如果打开了 shell 的 nocasematch 选项则匹配时不考虑字母的大小写 模式的任何部分都可以被引用以强制把其当作字符串来匹配 由正则表达式中括号里面的子模式匹配的字符串被保存在数组变量 BASH REMATCH 中 BASH REMA

    2026年3月18日
    2
  • VUE集成Office插件NTKO

    VUE集成Office插件NTKO使用 NTKO 插件 这玩意能不用就别用 因为它是插件 局限性比较大 在无法预知的用户环境上 各种问题 但是在安全上做的比较好 不会在用户本地缓存临时文件等 都是在内存中操作 然后流传输 over 浏览器判断 computed browser constuserAge navigator userAgent constrMsie msie s trident rv w constrFir

    2026年3月17日
    1
  • sql存储过程简单例题_sql存储过程实例详解

    sql存储过程简单例题_sql存储过程实例详解1、创建存储过程P1,查询每个学生的修课门数,要求列出学生学号、姓名及修课门数。createprocP1asselectStudent.StudentID,StudentName,count(CourseID)选修门数fromStudentjoinGradeonGrade.StudentID=Student.StudentIDgroupbyStudent.StudentID,StudentNamego2、创建存储过程P2,查询学生的学号、姓名、课程名、成绩

    2026年4月15日
    6
  • Flex_与java的通信

    Flex_与java的通信这个是我保留的通信的代码 amfEndPoint http localhost 8080 工程名 messagebroke amf Remote showBusyCurs true Remote endpoint amfEndPoint Remote 函数 addEventList ResultEvent RESULT 返回值处理函数 Remote 函数 附件里是剩下的部分

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号