激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 微信開發(fā)之使用java獲取簽名signature

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

2020-06-08 12:25u013142781 JAVA教程

這篇文章主要為大家詳細(xì)介紹了微信開發(fā)之使用java獲取簽名signature,感興趣的小伙伴們可以參考一下

一、前言

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

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

接下來將會(huì)給出獲取這三個(gè)參數(shù)的詳細(xì)代碼
本文的環(huán)境eclipse + maven
本文使用到的技術(shù)HttpClient、Json字符串轉(zhuǎn)map、sha1加密

二、需要用到的jar包

maven依賴的包有:

1、HttpClient包依賴

java" id="highlighter_601961">
?
1
2
3
4
5
6
7
8
9
10
<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)包依賴

?
1
2
3
4
5
6
7
8
9
10
11
<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é)果

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

四、詳細(xì)代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
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);
 //最終獲得調(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;
 }
}

五、工程下載

微信獲取簽名工程

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

原文鏈接:http://blog.csdn.net/u013142781/article/details/50429704

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 蜜桃av鲁一鲁一鲁一鲁 | 久久亚洲精品国产一区 | 成人在线第一页 | 欧美精品欧美 | 国产精品美女久久久久久网站 | xvideos korean | 大逼逼影院 | 国产 视频 一区二区 | 成人在线免费观看小视频 | 毛片免费观看视频 | 高清国产福利 | 巨根插入 | 黄色片在线免费播放 | 在线观看日韩av电影 | 九九热在线视频观看这里只有精品 | 免费观看一区二区三区 | 久久综合综合久久 | 日本在线看 | 国产成人自拍视频在线 | 欧美a∨一区二区三区久久黄 | 护士hd老师fre0性xxx | 色综合网在线观看 | 成人一级视频在线观看 | 欧美亚成人 | 久久精品在线免费观看 | 91视频观看免费 | 久草热久草视频 | 嫩草91在线 | 私库av在线免费观看 | 羞羞视频免费视频欧美 | 国产精品视频一区二区三区四区五区 | 久久人人爽人人爽人人片av高请 | 成人不卡在线观看 | 草久在线| 神马视频我不卡 | 午夜视频观看 | 成人福利视频在线观看 | 海角在线观看91一区二区 | 在线天堂资源 | 欧美日韩亚洲另类 | 美女扒开胸罩给男生看视频 |