您现在的位置是:主页 > news > 免费网站部署/网络推广视频

免费网站部署/网络推广视频

admin2025/5/9 7:35:45news

简介免费网站部署,网络推广视频,哪里建设网站最好用,php网站架设教程微信JSSDK开发中涉及到了accesstoken和jsapi_ticket的更新,而且二者都有2小时的失效限制,本方法提供了更新二者的方法,而且要注意,一定是accesstoken更新在先,jsapi_ticket更新在后,而且在实际应用中二者应…

免费网站部署,网络推广视频,哪里建设网站最好用,php网站架设教程微信JSSDK开发中涉及到了accesstoken和jsapi_ticket的更新,而且二者都有2小时的失效限制,本方法提供了更新二者的方法,而且要注意,一定是accesstoken更新在先,jsapi_ticket更新在后,而且在实际应用中二者应…
微信JSSDK开发中涉及到了accesstoken和jsapi_ticket的更新,而且二者都有2小时的失效限制,本方法提供了更新二者的方法,而且要注意,一定是accesstoken更新在先,jsapi_ticket更新在后,而且在实际应用中二者应该保存在数据库中,使用定时任务扫描该任务。本文同时提供了IP限制(如果获取的IP是127.0.0.1 请查阅文章),以及IP代理的方法。
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;import net.sf.json.JSONObject;public class UpdateAccesstoken {private String ServicePort_shezhi="0";//是否使用代理:0-NO,1-YESprivate String proxyHost="192.168.1.1";//代理IPprivate String proxyPort="8080";//代理端口/*** 2016年04月19日 * * 1、提供更新accesstoken的公共方法* 2、提供更新jsapi_ticket的公共方法* * 注意事项:* @throws UnknownHostException *//** 定时任务调用的主方法-仅允许一台服务器运行,需要进行ip限制*/public void updateAccesstokenTask() throws UnknownHostException{BasicCxAction bca=new BasicCxAction(basicService);String ip = (InetAddress.getLocalHost().getHostAddress()==null?"0.0.0.0":InetAddress.getLocalHost().getHostAddress());//将定时任务只放在指定服务器上执行,新增服务器不执行定时任务。String triggerIp = bca.gettriggerIp();if(!ip.equals(triggerIp)){//如果服务器IP和指定IP不相等,不执行定时任务,  !是必要的System.out.println("本服务器IP为【"+ip+"】,与指定服务器IP【"+triggerIp+"】不符,不执行定时更新accesstoken和jsapi_ticket的服务");}else{SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("运行了定时任务"+sdf.format(new Date()));String appid="123456780";String appsecret="1234567890";//appsecretSystem.out.println("appid="+appid+"  appsecret=**********");String accesstoken="";String jsapiticket="";accesstoken=forAccesstoken(appid,appsecret);System.out.println("accesstoken="+accesstoken);if(!"limit".equals(accesstoken.trim())){jsapiticket=forJsapiticket(accesstoken);if(!"limit".equals(jsapiticket.trim())){System.out.println("jsapiticket="+jsapiticket);//查询实体-更新accesstoken-更新jsapiticketif(true)){//这里换成保存数据库的动作!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!System.out.println("database更新-success");}else{System.out.println("database更新-false");}}else{System.out.println("定时任务失败,jsapiticket获取失败");}}else{System.out.println("定时任务失败,accesstoken获取失败");}}}/** 更新accesstoken的方法*/public String  forAccesstoken(String appid,String appsecret){String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appsecret;//调用微信更新accesstoken接口String result=sendHttpURLConnection(url);if(result==""||result==null){//如果是交互不正常,那么就继续交互forAccesstoken(appid,appsecret);}if(result.indexOf("errcode")==-1){//说明和微信交互正常//判断是否获取到正确的结果JSONObject jsons = JSONObject.fromObject(result);if((String)jsons.get("access_token")!=null){String accesstoken="";accesstoken=(String)jsons.get("access_token");return accesstoken;}}else{System.out.println("定时任务获取accesstoken异常="+result);}return "limit";}/**更新 jsapi_ticket的方法*https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi*/public String  forJsapiticket(String ACCESS_TOKEN){String url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+ACCESS_TOKEN+"&type=jsapi";//调用微信更新forJsapiticket接口String result=sendHttpURLConnection(url);if(result==""||result==null){//如果是交互不正常,那么就继续交互forJsapiticket(ACCESS_TOKEN);}if(result.indexOf("ticket")>-1){//说明和微信交互正常//判断是否获取到正确的结果JSONObject jsons = JSONObject.fromObject(result);if((String)jsons.get("ticket")!=null){String ticket="";ticket=(String)jsons.get("ticket");return ticket;}}else{//如果是交互不正常,那么就继续交互System.out.println("定时任务获取Jsapiticket异常="+result);}return "limit";}/** 发送请求的公共方法-设置是否使用代理标志位*//*** 仅仅在发送url的时候调用* @param url* @return*/public String sendHttpURLConnection(String url){//logger.info("向微信发起请求,发送的url为:"+url);String str = "";try {URL getUrl = new URL(url);// 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,	HttpURLConnection connection;//代理判断,0-不使用代理;1-使用代理if("0".equals(ServicePort_shezhi)){connection = (HttpURLConnection) getUrl.openConnection();}else{Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress(proxyHost, Integer.valueOf(proxyPort)));connection =(HttpURLConnection)getUrl.openConnection(proxy); }// 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到connection.setConnectTimeout(25000);connection.setReadTimeout(25000);connection.connect();// 取得输入流,并使用Reader读取BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));String lines;//获取返回的字符流转化为字符串while ((lines = reader.readLine()) != null) {str = str + lines;}reader.close();// 断开连接connection.disconnect();//logger.info("向微信发起请求,微信返回的字符串为:"+str);return str;} catch (IOException e) {// TODO Auto-generated catch blockSystem.out.println("向微信发起请求出现异常,微信返回的字符串为:"+str+" e.getMessage()="+e.getMessage());//logger.info("向微信发起请求出现异常,微信返回的字符串为:"+str,e.getMessage());}//运行到此说明发生错误str="errcode";return str;}}