获取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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DOS 和 Linux 常用命令的对比

    DOS和Linux常用命令的对比许多在shell提示下键入的Linux命令都与你在DOS下键入的命令相似。事实上,某些命令完全相同。本附录提供了Windows的DOS提示

    2021年12月26日
    41
  • Hmily 源码解析(二)—— Hmily事务工作流程「建议收藏」

    Hmily 源码解析(二)—— Hmily事务工作流程「建议收藏」Hmily源码解析(二)前言这一篇不想谈论Hmily源码的技术实现,而是想在过了一遍hmily的实现后把hmily的工作思路单独地整理出来再进行一次总结。看看能不能进一步有所得。以hmily-demo-springcloud为例,它的实现思路如下。Hmily事务工作流程首先它是基于切面编程来实现分布式事务的操作,及通过日志记录TCC事务的信息以保证最终一致性。前…

    2022年5月11日
    32
  • 能源预测:回顾与展望(IEEE论文)

    能源预测:回顾与展望(IEEE论文)EnergyForecasting:AReviewandOutlook—阅读笔记。

    2022年5月3日
    66
  • ActionBar 背景色修改

    ActionBar 背景色修改

    2021年6月20日
    89
  • socketpair原理_pair of shoes意思

    socketpair原理_pair of shoes意思socketpair()函数的声明:#include&lt;sys/types.h&gt;#include&lt;sys/socket.h&gt;intsocketpair(intd,inttype,intprotocol,intsv[2]);socketpair()函数用于创建一对无名的、相互连接的套接子。 如果函数成功,则返回0,创建好的套接字分别是sv[0…

    2022年10月15日
    2
  • Java main方法

    Java main方法publicstaticvoidmain(String[]args){}或者 publicstaticvoidmain(Stringargs[]){}main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,在按住Alt+/的方式快速创建main方法

    2022年6月1日
    26

发表回复

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

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