大家好,又见面了,我是你们的朋友全栈君。
今天咱们来说说怎么通过代码来获取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 "";
}
你们如果没有设置代理的话,代理这块可以删除掉。
最后…
博主是一枚小白,记录工作上目前对博主而言比较难的问题。
如果错误请私信博主。谢谢,有不懂的也可以找博主哦~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129704.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...