1. Preface
The three parameters that are ultimately used for WeChat interface call verification:
Next, the detailed code to obtain these three parameters will be given. The environment of this article is eclipse + maven.
The technologies used in this article HttpClient, Json string to map, sha1 encryption
2. The required jar package
The packages that maven depends on are:
1. HttpClient package dependency
<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 to map related package dependencies
<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>
3. Operation results
4. Detailed code
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 httppost) { HttpResponse response = sendRequest(httpclient, httppost); 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 httppclient, HttpUriRequest httppost) { 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 httppost = 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 { http.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return http; } public static void main(String[] args) { //Get 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); //Get 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); //Get signature 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 encryption String signature = SHA1(str); System.out.println("noncestr=" + noncestr); System.out.println("timestamp=" + timestamp); System.out.println("signature=" + signature); //Finally, noncestr, timestamp, signature required to call WeChat js interface verification } /** * @author: Luo Guohui* @date: December 17, 2015 at 9:24:43 am * @description: SHA, SHA1 encryption* @parameter: str: string to be encrypted* @return: encryption string**/ public static String SHA1(String str) { try { MessageDigest digest = java.security.MessageDigest .getInstance("SHA-1"); //If it is SHA encryption, just change "SHA-1" to "SHA" to digest.update(str.getBytes()); byte messageDigest[] = digest.digest(); // Create Hex String StringBuffer hexStr = new StringBuffer(); // Convert byte array to hexadecimal number 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; }}5. Project download
Get signature project on WeChat
For more exciting content, please click "Android WeChat Development Tutorial Summary" and "Java WeChat Development Tutorial Summary" welcome everyone to learn and read.
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.