1. คำนำ
พารามิเตอร์สามตัวที่ใช้ในที่สุดสำหรับการตรวจสอบการโทรอินเตอร์เฟส WeChat:
ถัดไปรหัสโดยละเอียดเพื่อให้ได้พารามิเตอร์ทั้งสามนี้จะได้รับ สภาพแวดล้อมของบทความนี้คือ Eclipse + Maven
เทคโนโลยีที่ใช้ในบทความนี้ HttpClient, String JSON ไปยัง Map, การเข้ารหัส sha1
2. แพ็คเกจขวดที่จำเป็น
แพ็คเกจที่ Maven ขึ้นอยู่กับคือ:
1. การพึ่งพาแพ็คเกจ httpClient
<การพึ่งพา> <roupId> org.apache.httpComponents </groupId> <ratifactId> httpcore </artifactid> <sersion> 4.4.3 </version> </dercendency> <Sersion> 4.5.1 </Sention> </dependency>
2. JSON ไปยังแผนที่การพึ่งพาแพ็คเกจที่เกี่ยวข้อง
<Ependency> <sderctId> net.sf.json-Lib </groupId> <ratifactid> json-Lib </artifactid> <version> 2.4 </version> <classifier> jdk15 </classifier>
3. ผลการดำเนินงาน
4. รหัสรายละเอียด
แพ็คเกจ com.luo.util; นำเข้า java.io.ioexception; นำเข้า java.io.unsupportencodexception; นำเข้า Java.security.messagedigest; นำเข้า Java.security java.util.list; นำเข้า java.util.map; นำเข้า java.util.set; นำเข้า java.util.uuid; นำเข้า net.sf.json.jsonObject; นำเข้า org.apache.http.htttpentity; org.apache.http.parseException; นำเข้า org.apache.http.client.clientprotocolexception; นำเข้า org.apache.http.client.entity.urlencodedFormentity; นำเข้า org.apache.http.client.methods.httpget; org.apache.http.client.methods.httppost; นำเข้า org.apache.http.client.methods.httpurirequest; นำเข้า org.apache.http.impl.defaulthtpClient org.apache.http.protocol.http; นำเข้า org.apache.http.util.entityutils; คลาสสาธารณะ httpxmlclient {โพสต์สตริงคงที่ (สตริง url, แผนที่ <สตริง, สตริง> พารามิเตอร์) สตริงตัว = null; httppost post = postform (url, params); body = revoke (httpClient, โพสต์); httpClient.getConnectionManager (). shutdown (); ร่างกายกลับ; } สตริงคงที่สาธารณะรับ (string url) {defaulthttpClient httpClient = ใหม่ defaulthttpClient (); สตริงตัว = null; httpget get = new httpget (url); body = reckoke (httpClient, get); httpClient.getConnectionManager (). shutdown (); ร่างกายกลับ; } สตริงคงที่ส่วนตัว Invoke (defaulthttpClient httpClient, httpurirequest httppost) {httpresponse response = sendrequest (httpClient, httppost); สตริงตัว = paseresponse (การตอบสนอง); ร่างกายกลับ; } สตริงคงที่ส่วนตัว paseresponse (การตอบสนอง httpresponse) {httpentity entity = response.getEntity (); String charset = entityUtils.getContentCharset (เอนทิตี); สตริงตัว = null; ลอง {body = entityutils.toString (เอนทิตี); } catch (parseexception e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } กลับร่างกาย; } ส่วนตัวคงที่ httpresponse sendrequest (defaulthttpclient httppClient, httpurirequest httppost) {httpresponse response = null; ลอง {response = httpClient.execute (httpost); } catch (clientprotocolexception e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } ตอบกลับการตอบกลับ; } ส่วนตัวคงที่ httppost postform (rl string, map <string, string> params) {httppost httppost = new httppost (url); รายการ <NamevaluePair> nvps = new ArrayList <NamevaluePair> (); ตั้งค่า <string> keyset = params.keyset (); สำหรับ (คีย์สตริง: คีย์เซ็ต) {nvps.add (ใหม่ basicannamevaluePair (คีย์, params.get (คีย์))); } ลอง {http.setEntity (urlencodedFormentity ใหม่ (nvps, http.utf_8)); } catch (unsupportencodingexception e) {e.printstacktrace (); } ส่งคืน http; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// get access_token map <string, string> params = new hashmap <string, string> (); params.put ("corpid", "WX5F24FA0DB1819EA2"); params.put ("Corpsecret", "UQTWZF0BQTL2KRHX0AMEKJPQ8L0AO96LSPSNFCTOBLRBUYPO4DUBHMN0_V2JHS-9"); สตริง xml = httpxmlclient.post ("https://qyapi.weixin.qq.com/cgi-bin/gettoken", params); jsonObject jsonMap = jsonObject.FromObject (XML); แผนที่ <สตริงสตริง> แผนที่ = ใหม่ hashmap <สตริงสตริง> (); ตัววนซ้ำ <String> it = jsonMap.keys (); ในขณะที่ (it.hasnext ()) {string key = (string) it.next (); สตริง u = jsonmap.get (คีย์) .toString (); map.put (key, u); } string access_token = map.get ("access_token"); System.out.println ("access_token =" + access_token); // รับตั๋วตั๋ว ("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> (); มัน = jsonMap.keys (); ในขณะที่ (it.hasnext ()) {string key = (string) it.next (); สตริง u = jsonmap.get (คีย์) .toString (); map.put (key, u); } สตริง jsapi_ticket = map.get ("ตั๋ว"); System.out.println ("jsapi_ticket =" + jsapi_ticket); // รับ 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 =" + ลายเซ็น); // ในที่สุด, noncest, timestamp, ลายเซ็นที่จำเป็นในการโทรหา wechat js การตรวจสอบอินเตอร์เฟส}/*** @author: luo guohui* @date: 17 ธันวาคม 2015 เวลา 9:24:43 น {ลอง {messageGeSest digest = java.security.messageDigest .getInstance ("sha-1"); // ถ้าเป็นการเข้ารหัส sha เพียงแค่เปลี่ยน "sha-1" เป็น "sha" เป็น digest.update (str.getBytes ()); byte messageGeSt [] = digest.digest (); // สร้าง hex string stringbuffer hexstr = new StringBuffer (); // แปลงอาร์เรย์ไบต์เป็นเลขฐานสิบหกสำหรับ (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" และ "สรุปการสอนการพัฒนา Java WeChat" ยินดีต้อนรับทุกคนที่จะเรียนรู้และอ่าน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น