一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

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

微信開發之使用java獲取簽名signature

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

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

一、前言

微信接口調用驗證最終需要用到的三個參數noncestr、timestamp、signature

微信開發之使用java獲取簽名signature

接下來將會給出獲取這三個參數的詳細代碼
本文的環境eclipse + maven
本文使用到的技術HttpClient、Json字符串轉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轉map相關包依賴

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

三、運行結果

微信開發之使用java獲取簽名signature

四、詳細代碼

?
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);
 //最終獲得調用微信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++) {
  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;
 }
}

五、工程下載

微信獲取簽名工程

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜精品久久久久久久99蜜桃 | 999jjj在线播放 | 免费在线观看日韩 | 国产人成77777视频网站 | 天天舔天天干 | 天天天做天天天天爱天天想 | 奇米影视888四色首页 | 免费超级乱淫播放手机版 | 欧美一级在线全免费 | 欧美 变态 另类 人妖班 | 国产精品最新资源网 | 女人张开腿 让男人桶个爽 免费观看 | 9420高清完整版在线观看国语 | 亚洲国产成人资源在线桃色 | 久久性综合亚洲精品电影网 | 九九热在线视频 | 午夜亚洲国产 | 国产亚洲人成网站在线观看不卡 | 日本中文字幕一区二区有码在线 | 国产高清在线精品一区二区 | 晓雪老师我要进你里面好爽 | 日本免费久久久久久久网站 | 干美女在线视频 | 五月最新女厕所高跟嘘嘘 | 成年人免费在线视频 | 国产男女爱视频在线观看 | 色婷婷在线视频 | 高h舔穴 | 日韩欧美中文字幕一区二区三区 | 国产yw193.㎝m在线观看 | 欧美一级视频免费观看 | 99国产精品免费视频 | 高清女主播一区二区三区 | 视频在线观看高清免费 | 人成午夜免费大片在线观看 | 亚洲男人的天堂网站 | 2015台湾永久免费平台 | 大象传媒短视频网站 | 变态 另类 国产 亚洲 | 白丝憋尿 | 17岁韩国在线观看免费1 |