当前位置: 首页 > news >正文

网页设计网站建设过程报告/搜索词排行榜

网页设计网站建设过程报告,搜索词排行榜,安康做网站,装修公司谁做网站2019独角兽企业重金招聘Python工程师标准>>> 微信认证原理2.填写服务器配置 3.验证服务器地址的有效性,验证原理,Token, timestamp, nonce三个参数按照字典排序,拼接成string,然后判断是否和signature相等 4.依据接口文档实现业务逻辑 package com.xp.cn.servlet;im…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  1. 微信认证原理

    2.填写服务器配置

    3.验证服务器地址的有效性,验证原理,Token, timestamp, nonce三个参数按照字典排序,拼接成string,然后判断是否和signature相等

    4.依据接口文档实现业务逻辑

package com.xp.cn.servlet;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.logging.Logger;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;public class WeiXinParamServlet extends HttpServlet{private Logger log =Logger.getLogger(this.getClass().getName());  private static final long serialVersionUID = 1L;  private   String Token;private   String echostr;@Override  protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {  connect(request,response);  }  @Override  protected void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {  message(request,response);  }  @Override  public void init() throws ServletException {  Token="xp******************";  } /** *@author xp*@desc 接入连接生效验证</p> */  private void connect(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{  log.info("RemoteAddr: "+ request.getRemoteAddr());  log.info("QueryString: "+ request.getQueryString());  if(!accessing(request, response)){  log.info("服务器接入失败.......");  return ;  }  String echostr=getEchostr();  if(echostr!=null && !"".equals(echostr)){  log.info("服务器接入生效..........");  response.getWriter().print(echostr);//完成相互认证  }  }  /** * @author xp* Date 2013-04-19 * @desc用来接收微信公众平台的验证 */  private boolean accessing(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {  //微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。String signature = request.getParameter("signature");//微信加密签名String timestamp = request.getParameter("timestamp");//时间戳  String nonce = request.getParameter("nonce");//随机数String echostr = request.getParameter("echostr");//随机数字符串if(isEmpty(signature)){  return false;  }  if(isEmpty(timestamp)){  return false;  }  if(isEmpty(nonce)){  return false;  }  if(isEmpty(echostr)){  return false;  }  String[] ArrTmp = { Token, timestamp, nonce };  Arrays.sort(ArrTmp);  StringBuffer sb = new StringBuffer();  for (int i = 0; i < ArrTmp.length; i++) {  sb.append(ArrTmp[i]);  }  String pwd = Encrypt(sb.toString());//pwd 8052946b7c82d34982bcfcf04ddaa065917dd33f//signature 8052946b7c82d34982bcfcf04ddaa065917dd33flog.info("signature:"+signature+"timestamp:"+timestamp+"nonce:"+nonce+"pwd:"+pwd+"echostr:"+echostr);  if(trim(pwd).equals(trim(signature))){  this.echostr =echostr;  return true;  }else{  return false;  }  }  private String Encrypt(String strSrc) {  MessageDigest md = null;  String strDes = null;  byte[] bt = strSrc.getBytes();  try {  md = MessageDigest.getInstance("SHA-1");  md.update(bt);  strDes = bytes2Hex(md.digest()); //to HexString  } catch (NoSuchAlgorithmException e) {  System.out.println("Invalid algorithm.");  return null;  }  return strDes;  }  public String bytes2Hex(byte[] bts) {  String des = "";  String tmp = null;  for (int i = 0; i < bts.length; i++) {  tmp = (Integer.toHexString(bts[i] & 0xFF));  if (tmp.length() == 1) {  des += "0";  }  des += tmp;  }  return des;  }  public String getEchostr(){  return echostr;  }  /** *@author xp*@desc XML组装组件</p> */  private void message(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{  InputStream is = request.getInputStream();  // 取HTTP请求流长度  int size = request.getContentLength();  // 用于缓存每次读取的数据  byte[] buffer = new byte[size];  // 用于存放结果的数组  byte[] xmldataByte = new byte[size];  int count = 0;  int rbyte = 0;  // 循环读取  while (count < size) {   // 每次实际读取长度存于rbyte中  rbyte = is.read(buffer);   for(int i=0;i<rbyte;i++) {  xmldataByte[count + i] = buffer[i];  }  count += rbyte;  }  is.close();  String requestStr = new String(xmldataByte, "UTF-8");  try{  manageMessage(requestStr,request,response);  }catch(Exception e){  e.printStackTrace();  }  }  /** * @author xp * @param * @desc 业务转发组件 *  */  private void  manageMessage(String requestStr,HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{  String responseStr;  try {  XMLSerializer xmlSerializer=new XMLSerializer();  JSONObject jsonObject =(JSONObject) xmlSerializer.read(requestStr);  String event =jsonObject.getString("Event");  String msgtype =jsonObject.getString("MsgType");  if("CLICK".equals(event) && "event".equals(msgtype)){ //菜单click事件  String eventkey =jsonObject.getString("EventKey");  if("hytd_001".equals(eventkey)){ // hytd_001 这是好友团队按钮的标志值  jsonObject.put("Content", "欢迎使用好友团队菜单click按钮.");  }  }  responseStr =creatRevertText(jsonObject);//创建XML  log.info("responseStr:"+responseStr);  OutputStream os =response.getOutputStream();  os.write(responseStr.getBytes("UTF-8"));  }   catch (Exception e) {  e.printStackTrace();  }  }  private String creatRevertText(JSONObject jsonObject){  StringBuffer revert =new StringBuffer();  revert.append("<xml>");  revert.append("<ToUserName><![CDATA["+jsonObject.get("ToUserName")+"]]></ToUserName>");  revert.append("<FromUserName><![CDATA["+jsonObject.get("FromUserName")+"]]></FromUserName>");  revert.append("<CreateTime>"+jsonObject.get("CreateTime")+"</CreateTime>");  revert.append("<MsgType><![CDATA[text]]></MsgType>");  revert.append("<Content><![CDATA["+jsonObject.get("Content")+"]]></Content>");  revert.append("<FuncFlag>0</FuncFlag>");  revert.append("</xml>");  return revert.toString();  }  private boolean isEmpty(String str){  return null ==str || "".equals(str) ? true :false;  } private String trim(String str){  return null !=str  ? str.trim() : str;  }  }


转载于:https://my.oschina.net/u/2253438/blog/662414

http://www.lbrq.cn/news/1086301.html

相关文章:

  • 外国购物网站有哪些平台/百度官方网站入口
  • 南京模板做网站/长春网站制作系统
  • 河北省住房和建设厅网站/百度指数在线查询前100
  • 河源公司做网站/千博企业网站管理系统
  • 做有色研究的网站/网络推广吧
  • 中国电子商务网站建设/seo薪酬如何
  • 在乐文网站做翻译靠谱吗/软文代发价格
  • 网站设计和平面设计/创建网站的流程
  • 校园门户网站开发需求分析/google app
  • 网站建设青岛公司/娃哈哈软文推广
  • 营销型网站建设的特别之处都有哪些/百度广告优化
  • 网站建设 天津/推广普通话宣传语手抄报
  • 可做分析图的地图网站/seo怎么收费
  • 柳州市建设中心网站首页/网络推广方式
  • 如何做网站授权/google首页
  • 品牌营销和市场营销的区别/seo系统培训哪家好
  • 网站多少流量够用/搜索引擎优化简历
  • 济南建站模板/百度运营怎么做
  • 做h5网站的公司/网站做外链平台有哪些
  • 做好网站建设静态化/seo网络优化是做什么的
  • 行业用品网站怎么建设外链/微商引流一般用什么软件
  • 古建设计素材网站/宁波核心关键词seo收费
  • 建设电影网站赚钱/培训心得体会800字
  • 做网站要钱的吗/新网域名
  • h5做招聘网站可以吗/免费产品推广软件
  • dw怎么做网站首页/南宁seo优势
  • 贵阳网页网站制作/千锋教育培训多少钱
  • 大连网站设计公司/企业员工培训总结
  • 建设网站必须要服务器吗/企业网站建设模板
  • 枣阳网站开发公司哪家好/惠州seo代理计费
  • 一文读懂 JWT(JSON Web Token)
  • 不坑盒子:Word里1秒制作“花括号”题目,多音字组词、形近字组词……
  • OpenFeign-远程调用
  • 【愚公系列】《MIoT.VC》003-构建基本仿真工作站(组件的属性、行为、视频展示)
  • kafka中生产者的数据分发策略
  • 基于深度学习的图像分类:使用DenseNet实现高效分类