请问:http GET请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket),如何进行全局缓存。
我目前想到的是:
在ehcache中创建个cache:
cache中配置如下:
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="7200"
timeToLiveSeconds="7200"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
clearOnFlush="true"
/>
在Controller中如下实现:
ApiConfig ac = new ApiConfig();
// 配置微信 API 相关常量
ac.setAppId(PropKit.get("appId"));
ac.setAppSecret(PropKit.get("appSecret"));
ApiConfigKit.setThreadLocalApiConfig(ac);
String jsapi_ticket = CacheKit.get("jsapi_ticketCache", paras);
if (jsapi_ticket == null) {
JsTicket jsTicket=JsTicketApi.getTicket(JsApiType.jsapi);
jsapi_ticket=jsTicket.getTicket();
CacheKit.put("jsapi_ticketCache", paras,jsapi_ticket);
}
System.out.println(">>>>>>>>>>>>>>>>>>"+jsapi_ticket);
Map signMap=Sign.sign(jsapi_ticket, url);
setAttr("url", signMap.get("url"));
setAttr("jsapi_ticket", signMap.get("jsapi_ticket"));
setAttr("nonceStr", signMap.get("nonceStr"));
setAttr("timestamp", signMap.get("timestamp"));
setAttr("signature", signMap.get("signature"));
这些操作更新到服务器
测试总是提示:invalid signature签名错误。
官方提示可能有如下几种错误,缓存应该怎么存: