一、前言

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

接下来将会给出获取这三个参数的详细代码

本文使用到的技术HttpClient、Json字符串转map、sha1加密

二、需要用到的jar包

maven依赖的包有:

1、HttpClient包依赖

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

2、json转map相关包依赖

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

详细代码

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_tokenMap<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);//获取ticketparams.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);//获取签名signatureString 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 +"×tamp=" + 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}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 StringStringBuffer hexStr = new StringBuffer();// 字节数组转换为 十六进制 数for (int i = 0; i < messageDigest.length; i++) {String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);if (shaHex.length() < 2) {hexStr.append(0);}hexStr.append(shaHex);}return hexStr.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}
}

仅供参考,自行修改

微信开发之使用java获取签名signature相关推荐

  1. 微信开发之使用java获取签名signature(贴源码,附工程)

    一.前言 微信接口调用验证最终需要用到的三个参数noncestr.timestamp.signature: 接下来将会给出获取这三个参数的详细代码 本文的环境eclipse + maven 本文使用到 ...

  2. java接口签名(Signature)实现方案续

    一.前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案 )收获了很多好评,此次来说一下另一种简单粗暴的签名方案.相对于之前的签名方案,对body.paramenter.pa ...

  3. 【转】关于微信开发者平台移动应用获取签名解决问题

    你看到的这个文章来自于http://www.cnblogs.com/ayanmw 在微信开放平台,申请移动应用的时候: https://open.weixin.qq.com/cgi-bin/appcr ...

  4. java获取微信token_Java微信公众平台开发(六)--微信开发中的token获取

    转自:http://www.cuiyongzhi.com/post/44.html (一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access ...

  5. JAVA微信开发:[17]如何获取所有关注用户

    该方法获取所有关注公共账号的微信用户的openId集合, 再通过openId集合既可以获取所有的用户的信息.   /** * 获取所有的关注用户 * * @return */ public  List ...

  6. 微信开发_网页授权获取用户的基本信息

    如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于OAuth2.0的说明 官方网站:http://oauth.net/   http:/ ...

  7. 小程序websocket java_微信小程序websocket java获取不到data

    在使用java作为后台测试微信小程序时,发现: 1.后台中ServerHttpRequest request中的session是空的,前端通过wx.connectSocket传递的data也没看到. ...

  8. 微信开发之网页授权获取用户基本信息

    微信官方文档:网页授权获取用户基本信息 具体而言,网页授权流程分为四步: 1.引导用户进入授权页面同意授权,获取code https://open.weixin.qq.com/connect/oaut ...

  9. 企业微信开发--网页授权(获取code)

    在企业微信中,我们可以开发企业应用.使用企业应用,我们可以访问到外部网站.那么外部网站如何获取到企业微信共享用户id呢?企业微信提供了OAuth的授权登录方式,可以让网页和企业微信共享用户ID,从而免 ...

最新文章

  1. C#之windows桌面软件第一课:倒时器软件
  2. OCFS2+ASM 的RAC安装文档
  3. Acid: 单网页检查页面,浏览器兼容性测试,浏览器好坏的标志
  4. windows2000 日志
  5. fir.im Weekly - 工欲善其事,必先利其器
  6. 你真的了解分层架构吗?——写给被PetShop毒害的朋友们
  7. Android API介绍
  8. python画图小实例_Python画高斯分布图形实例代码
  9. 2018春江苏省计算机等级考试,2018年春季江苏省计算机等级考试报名通知
  10. 转载:用图片搜索图片的几个好网站
  11. 51单片机用PID算法温度控制器毕业设计 完整资料,Matlab作图仿真源码
  12. Mac系统怎样设置开机启动项
  13. 【第二十篇】Flowable中的任务回退
  14. 计算机速成课 第三十七集 机器人
  15. LabVIEW图表之双坐标轴
  16. Pinta 1.0发布
  17. HTML5商业解决方案公司网页模板
  18. 《计算机视觉与图像处理》最全总结之就业必备-小白易懂易上手
  19. 前端-可视化创建vue项目
  20. 读《AMT前沿论丛》杂志有感

热门文章

  1. CAS单点登录(http方式)
  2. git 克隆到指定分支
  3. anaconda3 复制or克隆环境
  4. ZeroMemory、memset 和 “={0}” 三者区别
  5. 【运筹优化】Python调用OR-Tools求解TSP问题
  6. 用Navicat Premium连接数据库!
  7. String.prototype.padStart()
  8. 广播 onReceiver 的 context 可否启动 Activity,显示 Dialog
  9. QQ卡丁车:腾讯自主研发的联网对战赛车游戏
  10. 电脑开机提示 EFI PXE 0 for IPv6