• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > 微信开发之使用java获取签名signature图文介绍

微信开发之使用java获取签名signature图文介绍

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了微信开发 java signature等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
这篇文章主要为大家详细介绍了微信开发之使用java获取签名signature,感兴趣的小伙伴们可以参考一下

一、前言

微信接口调用验证最终需要用到的三个参数noncestr、timestamp、signature:

微信开发之使用java获取签名signature图文介绍

接下来将会给出获取这三个参数的详细代码
本文的环境eclipse + maven
本文使用到的技术HttpClient、Json字符串转map、sha1加密

二、需要用到的jar包

maven依赖的包有:

1、HttpClient包依赖

<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpcore</artifactId>
 <version>4.4.3</version>
</dependency>
<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpclient</artifactId>
 <version>4.5.1</version>
</dependency>

2、json转map相关包依赖

<dependency>  
  <groupId>net.sf.json-lib</groupId>  
  <artifactId>json-lib</artifactId>  
  <version>2.4</version> 
  <classifier>jdk15</classifier> 
</dependency>
<dependency>
  <groupId>xom</groupId>
  <artifactId>xom</artifactId>
  <version>1.2.5</version>
</dependency>

三、运行结果

微信开发之使用java获取签名signature图文介绍

四、详细代码


package com.luo.util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class HttpXmlClient {

  public static String post(String url, Map<String, String> params) {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    String body = null;
    HttpPost post = postForm(url, params);
    body = invoke(httpclient, post);
    httpclient.getConnectionManager().shutdown();
    return body;
  }

  public static String get(String url) {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    String body = null;
    HttpGet get = new HttpGet(url);
    body = invoke(httpclient, get);
    httpclient.getConnectionManager().shutdown();
    return body;
  }

  private static String invoke(DefaultHttpClient httpclient,
      HttpUriRequest httpost) {
    HttpResponse response = sendRequest(httpclient, httpost);
    String body = paseResponse(response);
    return body;
  }

  private static String paseResponse(HttpResponse response) {
    HttpEntity entity = response.getEntity();
    String charset = EntityUtils.getContentCharSet(entity);
    String body = null;
    try {
      body = EntityUtils.toString(entity);
    } catch (ParseException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return body;
  }

  private static HttpResponse sendRequest(DefaultHttpClient httpclient,
      HttpUriRequest httpost) {
    HttpResponse response = null;
    try {
      response = httpclient.execute(httpost);
    } catch (ClientProtocolException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return response;
  }

  private static HttpPost postForm(String url, Map<String, String> params) {

    HttpPost httpost = new HttpPost(url);
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();

    Set<String> keySet = params.keySet();
    for (String key : keySet) {
      nvps.add(new BasicNameValuePair(key, params.get(key)));
    }

    try {
      httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }

    return httpost;
  }

  public static void main(String[] args) {
    //获取access_token
    Map<String, String> params = new HashMap<String, String>();
    params.put("corpid","wx5f24fa0db1819ea2");
    params.put("corpsecret","uQtWzF0bQtl2KRHX0amekjpq8L0aO96LSpSNfctOBLRbuYPO4DUBhMn0_v2jHS-9");
    String xml = HttpXmlClient.post("https://qyapi.weixin.qq.com/cgi-bin/gettoken",params);
    JSONObject jsonMap = JSONObject.fromObject(xml);
    Map<String, String> map = new HashMap<String, String>();
    Iterator<String> it = jsonMap.keys(); 
    while(it.hasNext()) { 
      String key = (String) it.next(); 
      String u = jsonMap.get(key).toString();
      map.put(key, u); 
    }
    String access_token = map.get("access_token");
    System.out.println("access_token=" + access_token);

    //获取ticket
    params.put("access_token",access_token);
    xml = HttpXmlClient.post("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket",params); 
    jsonMap = JSONObject.fromObject(xml);
    map = new HashMap<String, String>();
    it = jsonMap.keys(); 
    while(it.hasNext()) { 
      String key = (String) it.next(); 
      String u = jsonMap.get(key).toString();
      map.put(key, u); 
    }
    String jsapi_ticket = map.get("ticket");
    System.out.println("jsapi_ticket=" + jsapi_ticket);

    //获取签名signature
    String noncestr = UUID.randomUUID().toString();
    String timestamp = Long.toString(System.currentTimeMillis() / 1000);
    String url="http://mp.weixin.qq.com";
    String str = "jsapi_ticket=" + jsapi_ticket +
        "&noncestr=" + noncestr +
        "&timestamp=" + timestamp +
        "&url=" + url;
    //sha1加密
    String signature = SHA1(str);
    System.out.println("noncestr=" + noncestr);
    System.out.println("timestamp=" + timestamp);
    System.out.println("signature=" + signature);
    //最终获得调用微信js接口验证需要的三个参数noncestr、timestamp、signature
  }

    /** 
   * @author:罗国辉 
   * @date: 2015年12月17日 上午9:24:43 
   * @description: SHA、SHA1加密
   * @parameter:  str:待加密字符串
   * @return: 加密串
  **/
  public static String SHA1(String str) {
    try {
      MessageDigest digest = java.security.MessageDigest
          .getInstance("SHA-1"); //如果是SHA加密只需要将"SHA-1"改成"SHA"即可
      digest.update(str.getBytes());
      byte messageDigest[] = digest.digest();
      // Create Hex String
      StringBuffer hexStr = new StringBuffer();
      // 字节数组转换为 十六进制 数
      for (int i = 0; i < messageDigest.length; i++



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • python基于itchat实现微信群消息同步机器人
  • 关于技术窍门的详细介绍
  • 解析微信公众平台开发之发送图文消息.Net代码
  • PHP实现微信扫码支付功能
  • asp.net微信开发消息应答的技巧
  • C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一
  • 详解asp.net微信开发消息应答方法
  • 微信端开发之如何登录小程序
  • C#微信开发系列-自定义菜单管理
  • 微信公众平台开发UnionID

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信小程序开发入门实例
    • 使用.NET解析微信支付的实现方法
    • .Net开发微信公众平台之自定义菜单代码详解
    • 微信支付统一下单,用PHP怎么实现?(代码全)
    • 对一些程序示例的总结
    • 微信公众平台开发获取关注者列表
    • 微信开发实现相机拍照和本地上传图片的功能
    • 微信支付开发 Native支付
    • 微信公众平台开发基本原理及消息接
    • php微信公众号开发(4)php实现自定义关键字回复

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有