1. Pendahuluan
Tiga parameter yang akhirnya digunakan untuk verifikasi panggilan antarmuka WeChat:
Selanjutnya, kode terperinci untuk mendapatkan ketiga parameter ini akan diberikan. Lingkungan artikel ini adalah Eclipse + Maven.
Teknologi yang digunakan dalam artikel ini httpclient, string json untuk memetakan, enkripsi sha1
2. Paket JAR yang Diperlukan
Paket yang diandalkan Maven adalah:
1. Ketergantungan paket httpclient
<dependency> <GroupId> org.apache.httpComponents </groupid> <ArTifactId> httpcore </artifactid> <version> 4.4.3 </version> </dependency> <ArtifAcid> org.apache.htpComponents </groupid> <ArtifacTID> <version> 4.5.1 </version> </dependency>
2. JSON untuk memetakan dependensi paket terkait
<dependency> <GroupId> net.sf.json-lib </groupId> <ArTifactId> json-lib </artifactid> <version> 2.4 </version> <classifier> JDK15 </S CLASTIFIER> </Dependency> <groupid> </Groupid> <ArtiFACTID> </ARTOTAT> <RUPRIMED> </Groupid> <ArtiFACTID> VERSITIF </ARTOTAT> </versi </grupt> </groupid> <ArTtifacTID> </art
3. Hasil Operasi
4. Kode terperinci
Paket com.luo.util; impor java.io.ioexception; impor java.io.unsupportedencodingException; impor java.security.messagedigest; impor java.security.noSuchalgorithMexception; impor java.util.arraylist; impor java. java.util.list; import java.util.map; import java.util.set; import java.util.uuid; impor net.sf.json.jsonobject; org.apache.htponAF.htponeAf. org.apache.http.parseException; import org.apache.http.client.clientProtocolException; import org.apache.http.client.entity.urlencodedfortity; 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.defaulthtpclient; impor org.apache.http.messp.messp.basePclient; Impor org.apache.htp.messp.messp.messePlient; 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 (); tubuh kembali; } public static string get (string url) {defaulthttpclient httpclient = new defaulthttpclient (); String body = null; Httpget get = httpget baru (url); body = Invoke (httpClient, get); httpclient.getConnectionManager (). shutdown (); tubuh kembali; } Private Static String Invoke (defaulthttpClient httpclient, httpurirequest httppost) {httpresponse response = sendRequest (httpclient, httppost); String body = paseresponse (respons); tubuh kembali; } private static string paseresponse (httpresponse response) {httpentity entity = response.getEntity (); String charset = entityutils.getContentCharset (entitas); String body = null; coba {body = entityutils.tostring (entitas); } catch (parseException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } return body; } private static httpresponse sendRequest (defaulthttpclient httppclient, httpurirequest httppost) {httpresponse response = null; coba {response = httpclient.execute (httpost); } catch (clientprotocolexception e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } return response; } private static httppost postform (string url, peta <string, string> params) {httppost httppost = new httppost (url); Daftar <namevaluePair> nvps = new ArrayList <namevaluePair> (); Set <string> keyset = params.keyset (); untuk (tombol string: keyset) {nvps.add (new BasicNamEvaluePair (key, params.get (key))); } coba {http.setentity (UrlencodedFormentity baru (NVPS, http.utf_8)); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } return http; } public static void main (string [] args) {// dapatkan peta access_token <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); Peta <string, string> peta = new HashMap <String, String> (); Iterator <string> it = jsonmap.keys (); while (it.hasnext ()) {string key = (string) it.next (); String u = jsonmap.get (key) .toString (); peta.put (tombol, u); } String access_token = map.get ("access_token"); System.out.println ("access_token =" + access_token); // Dapatkan tiket params.put ("access_token", access_token); xml = httpxmlclient.post ("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket", params); jsonmap = jsonobject.fromObject (xml); peta = hashmap baru <string, string> (); itu = jsonmap.keys (); while (it.hasnext ()) {string key = (string) it.next (); String u = jsonmap.get (key) .toString (); peta.put (tombol, u); } String jsapi_ticket = map.get ("ticket"); System.out.println ("jsapi_ticket =" + jsapi_ticket); // Dapatkan string tanda tangan 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 Enkripsi String Signature = Sha1 (str); System.out.println ("noncestr =" + noncestr); System.out.println ("timestamp =" + timestamp); System.out.println ("Signature =" + Signature); // Akhirnya, noncestr, cap waktu, tanda tangan yang diperlukan untuk memanggil verifikasi antarmuka wechat js}/*** @author: luo guohui* @date: 17 Desember 2015 at 9:24:43 AM* @Description: sha, sha1 enkripsi* @parameter: str: string untuk menjadi encrypt* @Ret @Ret @Ret* @parameter: str: string to be we encrypt* Coba {MessageSageGest Digest = java.security.messagedigest .getInstance ("sha-1"); // Jika itu adalah enkripsi SHA, cukup ubah "sha-1" menjadi "sha" menjadi digest.update (str.getbytes ()); byte messagedigest [] = digest.gigest (); // buat hex string stringBuffer hexstr = new stringBuffer (); // Konversi array byte menjadi hexadecimal number untuk (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. Unduh Proyek
Dapatkan Proyek Tanda Tangan di WeChat
Untuk konten yang lebih menarik, silakan klik "Ringkasan Tutorial Pengembangan Android WeChat" dan "Java WeChat Development Tutorial Ringkasan" Selamat datang semua orang untuk dipelajari dan dibaca.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.