1. 서문
궁극적으로 WeChat 인터페이스 통화 검증에 사용되는 세 가지 매개 변수 :
다음 으로이 세 가지 매개 변수를 얻기위한 세부 코드가 제공됩니다. 이 기사의 환경은 Eclipse + Maven입니다.
이 기사에 사용 된 기술 httpclient, JSON 문자열 매지, SHA1 암호화
2. 필요한 JAR 패키지
Maven에 의존하는 패키지는 다음과 같습니다.
1. httpclient 패키지 종속성
<pectionency> <groupid> org.apache.httpcomponents </groupid> <artifactid> httpcore </artifactid> <bersion> 4.4.3 </version> </fectionency> <groupid> org.apache.httpcomponents </groupid> htpcclient </artifactid> <버전> 4.5.1 </버전> </의존성>
2. JSON은 관련 패키지 종속성을 매핑합니다
<pectionency> <groupId> net.sf.json-lib </groupid> <artifactid> json-lib </artifactid> <버전> 2.4 </version> <classifier> jdk15 </classifier> </dependency> <pelepency> <groupid> xom </groupid> <artifactid </artifactid> <50 </version>
3. 운영 결과
4. 자세한 코드
package com.luo.util; import java.io.ioexception; import java.io.unsupportedencodexception; import java.security.messagedigest; import java.security.nosuchalgorithmexception; import java.util.arraylist; import java.util.hashmap; java.util 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.htttp.htttpresponse; http.namevaluepache org.apache.http.parseexception; import org.apache.http.client.clientprotocolexception; import org.apache.http.client.entity.urlencodedformentity; import org.apache.http.client.methods.httpget; 가져 오기; 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; org.apache.http.protocol.http; import org.apache.http.util.entityutils; public class httpxmlclient {public static string post (String URL, Map <String, String> Params) {defaulthtttpclient httpclient = new defaulthttpclient (); 문자열 body = null; httppost post = postform (url, params); body = invoke (httpclient, post); httpclient.getConnectionManager (). shutdown (); 반환 몸; } public static string get (String URL) {defaulthttpclient httpclient = new defaulthttpclient (); 문자열 body = null; httpget get = new httpget (url); body = invoke (httpclient, get); httpclient.getConnectionManager (). shutdown (); 반환 몸; } 개인 정적 문자열 호출 (defaulthttpclient httpclient, httpurirequest httppost) {httpresponse responsk = sendRequest (httpclient, httppost); 문자열 body = paseresponse (응답); 반환 몸; } private static string paseresponse (httpresponse responsk) {httpentity entity = response.getentity (); 문자열 charset = entityutils.getContentCharset (entity); 문자열 body = null; try {body = entityutils.tostring (entity); } catch (parseException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } 반환 바디; } private static httpresponse sendRequest (defaulthttpclient httppcclient, httpurirequest httppost) {httpresponse responsk = null; try {response = httpclient.execute (httpost); } catch (clientProtoColexception e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } 반환 응답; } private static httppost postform (문자열 URL, map <string, string> params) {httppost httppost = new httppost (url); List <NamesValuePair> nvps = new ArrayList <NamesValuePair> (); <string> keyset = params.keyset (); for (문자열 키 : 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) {// ac params.put ( "corpid", "wx5f24fa0db1819ea2"); params.put ( "corpsecret", "uqtwzf0bqtl2krhx0amekjpq8lao96lspspnfctoblrbuypo4dubhmn0_v2jhs-9"); 문자열 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 (); 문자열 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 (); 문자열 u = jsonmap.get (key) .toString (); map.put (key, u); } 문자열 jsapi_ticket = map.get ( "ticket"); System.out.println ( "jsapi_ticket =" + jsapi_ticket); // 서명 서명 문자열을 가져옵니다. noncestr = uuid.randomuuid (). toString (); String timestamp = long.tostring (System.CurrentTimeMillis () / 1000); 문자열 URL = "http://mp.weixin.qq.com"; String str = "jsapi_ticket =" + jsapi_ticket + "& noncest =" + noncestr + "× tamp =" + timestamp + "& url =" + url; // SHA1 암호화 문자열 서명 = SHA1 (str); System.out.println ( "noncest =" + noncestr); System.out.println ( "timestamp =" + timestamp); System.out.println ( "signature =" + signature); // 마지막으로, 비정규, 타임 스탬프, 서명은 wechat js 인터페이스 확인을 호출해야합니다}/*** @author : luo guohui* @date : 2015 년 12 월 17 일 오전 9시 24 분 43 초* @description : sha1 암호화* @parameter : stryption sha sha sha sha sha sha sha sha sha str) {try {MessageDigest 다이제스트 = java.security.messagegegest .getInstance ( "SHA-1"); // SHA 암호화 인 경우 "SHA-1"을 "sha"로 "sha"로 바꾸십시오 (str.getBytes ()); 바이트 messageDigest [] = digest.digest (); // hex 문자열 생성 stringbuffer hexstr = new StringBuffer (); // 바이트 배열을 16 진수로 변환합니다 (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. 프로젝트 다운로드
WeChat에서 시그니처 프로젝트를 받으십시오
보다 흥미로운 콘텐츠를 보려면 "Android WeChat Development Tutorial Summary"및 "Java WeChat Development Tutorial Summary"를 클릭하십시오.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.