国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

微信開發(fā)之使用java獲取簽名signature

2019-11-26 13:54:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、前言

微信接口調(diào)用驗(yàn)證最終需要用到的三個(gè)參數(shù)noncestr、timestamp、signature:

接下來(lái)將會(huì)給出獲取這三個(gè)參數(shù)的詳細(xì)代碼
本文的環(huán)境eclipse + maven
本文使用到的技術(shù)HttpClient、Json字符串轉(zhuǎn)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轉(zhuǎn)map相關(guān)包依賴

<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>

三、運(yùn)行結(jié)果

四、詳細(xì)代碼

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 +  "×tamp=" + timestamp +  "&url=" + url; //sha1加密 String signature = SHA1(str); System.out.println("noncestr=" + noncestr); System.out.println("timestamp=" + timestamp); System.out.println("signature=" + signature); //最終獲得調(diào)用微信js接口驗(yàn)證需要的三個(gè)參數(shù)noncestr、timestamp、signature } /**  * @author:羅國(guó)輝  * @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();  // 字節(jié)數(shù)組轉(zhuǎn)換為 十六進(jìn)制 數(shù)  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; }}

五、工程下載

微信獲取簽名工程

更多精彩內(nèi)容請(qǐng)點(diǎn)擊《Android微信開發(fā)教程匯總》,《java微信開發(fā)教程匯總》歡迎大家學(xué)習(xí)閱讀。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 定陶县| 丰镇市| 六盘水市| 沐川县| 兴化市| 镇远县| 凯里市| 隆回县| 无棣县| 偏关县| 景宁| 灌南县| 辽宁省| 丽水市| 孝义市| 资中县| 灵石县| 济源市| 夏河县| 信丰县| 阳泉市| 尉犁县| 锦州市| 枣庄市| 团风县| 广昌县| 镇宁| 徐水县| 慈利县| 惠水县| 泉州市| 富民县| 临潭县| 青川县| 岳池县| 惠水县| 含山县| 赤峰市| 曲靖市| 阿巴嘎旗| 黔西|