1. Prefacio
Los tres parámetros que finalmente se usan para la verificación de llamadas de interfaz WeChat:
A continuación, se dará el código detallado para obtener estos tres parámetros. El entorno de este artículo es Eclipse + Maven.
Las tecnologías utilizadas en este artículo httpclient, cadena json para mapear, cifrado SHA1
2. El paquete de jarra requerido
Los paquetes que depende de Maven son:
1. Dependencia del paquete httpclient
<Spendency> <MoupRoD> org.apache.httpComponents </groupid> <artifactId> httpcore </arfactid> <verserse> 4.4.3 </versión> </pendency> <ependency> <proupId> org.apache.httpComponents </groupId> <AtifactiCid> <Versión> 4.5.1 </versión> </pendency>
2. JSON para mapear dependencias de paquetes relacionados
<Spendency> <MoupRoMID> net.sf.json-lib </groupid> <artifactid> json-lib </artifactid> <verserse> 2.4 </versever> <classifiMe> jdk15 </classifier> </dependence> <pendency> <proupId> xom </groupid> <artifiCid> xom </artifactid> </spontion> </versión> </versión> </dependence>
3. Resultados de la operación
4. Código detallado
paquete com.luo.util; import java.io.ioException; import java.io.unsupportedenCodingException; import java.security.messageGest; import java.security.NosuchalgorithMexexception; import java.util.arraylist; import java.util.hashmap; importar java.util.util.util.utilist; import java. java.util.list; import java.util.map; import java.util.set; import java.util.uuid; import net.sf.json.jsonObject; import org.apache.htp.httpentity; import org.apache.http.httpespone; import.apache.htp.htp.name 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; importar org.apache.http; importar; import org.apache.http.util.entityUtils; public class httpxmlClient {public static string post (string url, map <string, string> params) {defaulthtpClient httpClient = new defaulThttpClient (); Cuerpo de cadena = nulo; Httppost post = postform (url, params); cuerpo = invocar (httpclient, post); httpclient.getConnectionManager (). Shutdown (); cuerpo de regreso; } public static string get (String url) {DeFaUalThttpClient httpClient = new DeFaUalTttpClient (); Cuerpo de cadena = nulo; Httpget get = new httpget (url); cuerpo = invocar (httpclient, get); httpclient.getConnectionManager (). Shutdown (); cuerpo de regreso; } cadena estática privada Invoke (DeFaulThttpClient httpClient, httpurirequest httppost) {httpResponse respuesta = sendRequest (httpclient, httppost); String body = paseSponse (respuesta); cuerpo de regreso; } cadena estática privada paseSponse (respuesta httpResponse) {httpentity entity = respuesta.getEntity (); Cadena charset = entityUtils.getContentCharset (entidad); Cuerpo de cadena = nulo; prueba {body = entityUtils.tostring (entidad); } catch (ParseException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); } cuerpo de retorno; } private static httpResponse sendRequest (defaulthttpClient httppclient, httpurirequest httppost) {httpResponse respuesta = null; intente {respuesta = httpclient.execute (httpost); } Catch (ClientProtocolexception e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); } Respuesta de retorno; } private static httppost postform (string url, map <string, string> params) {httppost httppost = new httppost (url); Lista <nameValuePair> nvps = new ArrayList <NameValuePair> (); Establecer <String> keySet = params.KeySet (); for (clave de cadena: keySet) {nvps.add (new BasicNameValuePair (Key, Params.get (Key))); } try {http.setEntity (nueva 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", "uqtwzf0bqtl2krhx0amekjpq8l0ao96lspsnfctoblrbuyipo4dubhmn0_v2jhs-9"); Cadena 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 (); Cadena u = jsonmap.get (key) .ToString (); map.put (clave, u); } String access_token = map.get ("access_token"); System.out.println ("access_token =" + access_token); // obtener 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 (); Cadena u = jsonmap.get (key) .ToString (); map.put (clave, u); } Cadena jsapi_ticket = map.get ("ticket"); System.out.println ("jsapi_ticket =" + jsapi_ticket); // Obtener cadena de firma de firma noncestr = uuid.randomuuid (). ToString (); String Timestamp = Long.ToString (System.CurrentTimemillis () / 1000); Cadena url = "http://mp.weixin.qqq.com"; String str = "jsapi_ticket =" + jsapi_ticket + "& noncestr =" + noncestr + "× tamp =" + timestamp + "& url =" + url; // cadena de cifrado SHA1 firma = sha1 (str); System.out.println ("noncestr =" + non -Cestr); System.out.println ("timestamp =" + timestamp); System.out.println ("firma =" + firma); // Finalmente, Non -Cestr, TimeStamp, Signature requerido para llamar a la verificación de la interfaz Wechat JS}/*** @author: luo guohui* @date: 17 de diciembre de 2015 a las 9:24:43 am* @Description: sha, sha1 cifrado* @parameter: str: str: stri Pruebe {MessageDigest Digest = Java.Security.MessageDigest .getInstance ("SHA-1"); // Si es cifrado SHA, simplemente cambie "sha-1" a "sha" a digest.update (str.getBytes ()); byte messageDigest [] = digest.digest (); // Crear hex string stringBuffer hexstr = new StringBuffer (); // Convertir la matriz de bytes en el número hexadecimal para (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. Descarga del proyecto
Obtenga un proyecto de firma en WeChat
Para obtener un contenido más emocionante, haga clic en "Resumen del tutorial de desarrollo de Android WeChat" y "Java WeChat Development Tutorial" Tutorial ", dan la bienvenida a todos para aprender y leer.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.