การพัฒนาบัญชีสาธารณะ WeChat โดยทั่วไปมุ่งเน้นไปที่องค์กรและองค์กร บุคคลสามารถสมัครบัญชีการสมัครสมาชิกเท่านั้นและอินเทอร์เฟซที่เรียกว่ามี จำกัด มาอธิบาย ขั้นตอนในการเข้าถึงบัญชีสาธารณะ สั้น ๆ :
1. ก่อนอื่นคุณต้องมีที่อยู่อีเมลเพื่อลงทะเบียนบนแพลตฟอร์มบัญชีอย่างเป็นทางการของ WeChat
วิธีการลงทะเบียนรวมถึงบัญชีการสมัครสมาชิกบัญชีอย่างเป็นทางการโปรแกรม MINI และบัญชีองค์กร บุคคลเราสามารถเลือกบัญชีการสมัครสมาชิกได้ที่นี่เท่านั้น
2 หลังจากการลงทะเบียนเราเข้าสู่แพลตฟอร์มบัญชีอย่างเป็นทางการ ---> การพัฒนา ---> การกำหนดค่าพื้นฐาน คุณต้องเติม URL และโทเค็นที่นี่ URL คืออินเทอร์เฟซที่เราใช้เซิร์ฟเวอร์
3. หากโปรแกรม Java Web Server ถูกรวบรวมและปรับใช้บนเซิร์ฟเวอร์และสามารถเรียกใช้ได้คุณสามารถดีบั๊กอินเทอร์เฟซออนไลน์ในบัญชี WeChat Official:
1) เลือกอินเทอร์เฟซที่เหมาะสม
2) ระบบจะสร้างตารางพารามิเตอร์สำหรับอินเทอร์เฟซนี้ คุณสามารถกรอกค่าพารามิเตอร์ที่เกี่ยวข้องโดยตรงในกล่องข้อความ (เครื่องหมายดอกจันแดงระบุว่าต้องการฟิลด์นี้)
3) คลิกปุ่มตรวจสอบปัญหาเพื่อรับข้อมูลการดีบักที่เกี่ยวข้อง
เช่น: ขั้นตอนในการรับ access_token:
1) ประเภทอินเตอร์เฟส: การสนับสนุนพื้นฐาน
2) รายการอินเทอร์เฟซ: รับอินเตอร์เฟส access_token/โทเค็น
3) กรอกพารามิเตอร์ที่เกี่ยวข้อง: grant_type, appid, Secret
4) คลิกเพื่อตรวจสอบปัญหา
5) ผลลัพธ์และพรอมต์จะถูกส่งคืนหลังจากการตรวจสอบสำเร็จและผลลัพธ์คือ: 200 ตกลง, พรอมต์: การร้องขอที่ประสบความสำเร็จหมายถึงการตรวจสอบจะสำเร็จ
สิ่งที่เรามีการตรวจสอบเพิ่มเติมที่นี่คือการดีบักอินเทอร์เฟซข้อความ: ข้อความข้อความข้อความรูปภาพข้อความเสียงข้อความวิดีโอ ฯลฯ
4. หากคุณไม่เข้าใจอินเทอร์เฟซคุณสามารถไปพัฒนา-> เครื่องมือนักพัฒนา-> เอกสารนักพัฒนาเพื่อสอบถาม
5. การอนุญาตอินเตอร์เฟส: บัญชีการสมัครสมาชิกส่วนใหญ่มีการสนับสนุนพื้นฐานการรับข้อความและอินเทอร์เฟซบางส่วนในบริการเว็บ
ด้านล่างเราส่วนใหญ่พูดถึงกรณีของ วิธีการรับข้อความโดยบัญชีการสมัครสมาชิก :
1. คุณต้องสมัครบัญชีการสมัครสมาชิก WeChat ส่วนตัว
2. URL Server และการปรับใช้รหัสฝั่งเซิร์ฟเวอร์ (คุณสามารถใช้ Tencent Cloud หรือ Alibaba Cloud Server)
1) คลาสบัญชี Servlet.java เพื่อตรวจสอบการประมวลผลข้อความจากเซิร์ฟเวอร์ WeChat และ WeChat Server
แพ็คเกจ cn.jon.wechat.servlet; นำเข้า java.io.ioException; นำเข้า java.io.printwriter; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; นำเข้า cn.jon.wechat.service.accountsservice; นำเข้า cn.jon.wechat.utils.signutil; บัญชีชั้นเรียนสาธารณะขยาย Httpservlet {Public AccountsServlet () {super (); } โมฆะสาธารณะทำลาย () {super.destroy (); // ใส่รหัสของคุณที่นี่}/ *** ยืนยันคำขอมาจาก WeChat Server*/ Public Void Doget (คำขอ httpservletRequest, การตอบกลับ httpservletResponse) โยน servletexception, ioexception {system.out.println ( // weChat การเข้ารหัสลายเซ็นสตริงลายเซ็น = request.getParameter ("ลายเซ็น"); // timestamp สตริง timestamp = request.getParameter ("timestamp"); // สตริงหมายเลขสุ่ม nonce = request.getParameter ("nonce"); // การสุ่มสตริงสตริง echosttr = request.getParameter ("echosttr"); PrintWriter out = response.getWriter (); // ตรวจสอบคำขอโดยตรวจสอบลายเซ็น หากการตรวจสอบประสบความสำเร็จให้ส่งคืน echosttr ตามที่เป็นอยู่แสดงว่าการเข้าถึงประสบความสำเร็จไม่เช่นนั้นการเข้าถึงจะล้มเหลวหาก (signutil.checksignature (ลายเซ็น, timestamp, nonce)) {out.print (echosttr); } out.close (); ออก = null; // response.encoderedirecturl ("success.jsp"); } /*** ข้อความประมวลผลที่ส่งโดย WeChat Server* /Public Void Dopost (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) โยน servletexception, ioexception {// รับ, กระบวนการและตอบสนองต่อคำขอข้อความ Response.Setcharacterencoding ("UTF-8"); // การเรียกประเภทธุรกิจหลักเพื่อรับข้อความและประมวลผลข้อความสตริง respmessage = accountService.processRequest (คำขอ); // การตอบกลับข้อความ PrintWriter out = response.getWriter (); out.print (respmessage); out.close (); } public void init () พ่น servletexception {// วางรหัสของคุณที่นี่}} 2) คลาส Signutil.java, การร้องขอคลาสเครื่องมือการตรวจสอบ, โทเค็นต้องสอดคล้องกับโทเค็นที่เต็มไปด้วย wechat
แพ็คเกจ cn.jon.wechat.utils; นำเข้า Java.security.MessageDigest; นำเข้า java.security.nosuchalgorithmexception; นำเข้า Java.util.Arrays; นำเข้า java.util.iterator; นำเข้า java.util.map; นำเข้า java.util.set; นำเข้า java.util.concurrent.concurrenthashmap; /*** คลาสเครื่องมือตรวจสอบการร้องขอ* @author Jon*/Signutil คลาสสาธารณะ {// สอดคล้องกับโทเค็นในการกำหนดค่า WeChat Private String Token = ""; Public Static Boolean Checksignature (String Signature, String Timestamp, String Nonce) {String [] array = new String [] {โทเค็น, timestamp, nonce}; //arrays.sort(arra); StringBuilder sb = new StringBuilder (); สำหรับ (int i = 0; i <arra.length; i ++) {sb.append (arra [i]); } MESAGEDIGEST MD = NULL; สตริง stnstr = null; ลอง {md = messageGeSt.getInstance ("sha-1"); ไบต์ [] digest = md.digest (sb.toString (). getBytes ()); stnstr = bytetoStr (digest); } catch (nosuchalgorithmexception e) {// toDo บล็อก catch ที่สร้างโดยอัตโนมัติ E.PrintStackTrace (); } // หน่วยความจำฟรี sb = null; // เปรียบเทียบสตริงที่เข้ารหัสของ sha1 กับลายเซ็นระบุว่าคำขอมาจาก weChat return stnstr! = null? stnstr.equals (signature.touppercase ()): false; } / ** * แปลงอาร์เรย์ไบต์เป็นสตริง hexadecimal * @param digestarra * @return * / สตริงคงที่ส่วนตัว bytetOSTR (byte [] digestarra) {// toDo วิธีที่สร้างอัตโนมัติ stub string สตริง digeststr = ""; สำหรับ (int i = 0; i <digestarra.length; i ++) {digeststr+= bytetohexstr (digestarra [i]); } return digeststr; } / *** แปลงไบต์เป็น hexadecimal string* / สตริงคงที่ส่วนตัว bytetoHexstr (byte dbyte) {// todo วิธีการที่สร้างอัตโนมัติ auto stub char [] digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; ถ่าน [] tmparr = ถ่านใหม่ [2]; tmparr [0] = digit [(dbyte >>> 4) & 0x0f]; tmparr [1] = digit [dbyte & 0x0f]; สตริง s = สตริงใหม่ (tmparr); กลับ s; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) { /*byte dbyte = 'a'; System.out.println (bytetohexstr (dbyte));*/ map <string, string> map = new concurrentHashMap <string, string> (); map.put ("4", "Zhangsan"); map.put ("100", "lisi"); set set = map.keyset (); Iterator iter = set.iterator (); ในขณะที่ (iter.hasnext ()) {// string keyv = (string) iter.next (); สตริงคีย์ = (สตริง) iter.next (); System.out.println (map.get (key)); // system.out.println (map.get (iter.next ())); } /*สำหรับ (int i = 0; i <map.size (); i ++) {}* /}} 3) Class Service AccountService.java ส่วนใหญ่สำหรับการร้องขอข้อความและการประมวลผลการตอบกลับและเมื่อผู้ใช้ทำตามบัญชีอย่างเป็นทางการของคุณพวกเขาสามารถตั้งค่าข้อความพุชเริ่มต้นได้
แพ็คเกจ cn.jon.wechat.service; นำเข้า java.util.date; นำเข้า java.util.map; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า cn.jon.wechat.message.req.imageMessage; นำเข้า cn.jon.wechat.message.req.linkMessage; นำเข้า cn.jon.wechat.message.req.locationMessage; นำเข้า cn.jon.wechat.message.req.videomessage; นำเข้า cn.jon.wechat.message.req.voicemessage; นำเข้า cn.jon.wechat.message.resp.textmessage; นำเข้า cn.jon.wechat.utils.messageutil; / *** decoupling แยกเลเยอร์ควบคุมออกจากเลเยอร์ลอจิกธุรกิจส่วนใหญ่จัดการกับคำขอและการตอบสนอง* @author Jon*/ บัญชีระดับสาธารณะบัญชี {processRequest สตริงคงที่ (httpservletrequest คำขอ) // เนื้อหาข้อความที่ส่งคืนโดยสตริงเริ่มต้น respcontent = "ข้อยกเว้นการจัดการคำขอโปรดลองในภายหลัง!"; ลอง {// XML คำขอการแยกวิเคราะห์ <String, String> requestMap = MessageUtil.Parexml (คำขอ); // บัญชีผู้ส่ง (open_id) สตริง fromusername = requestmap.get ("fromusername"); // สตริงบัญชีสาธารณะ tousername = requestmap.get ("tousername"); // ประเภทข้อความสตริง msgtype = requestmap.get ("msgtype"); // ตอบกลับข้อความนี้โดยเริ่มต้น textMessage defaultTextMessage = new TextMessage (); defaultTextMessage.settouserName (จากชื่ออัสบันทึก); DefaultTextMessage.setFromusername (tousername); DefaultTextMessage.setCreateTime (วันที่ใหม่ (). getTime ()); defaultTextMessage.setMsgType (MessageUtil.MessSage_Type_Text); DefaultTextMessage.setFuncFlag (0); // เนื่องจากค่าแอตทริบิวต์ HREF จะต้องเกิดขึ้นในคำพูดสองครั้งความขัดแย้งนี้กับคำพูดสองเท่าของสตริงตัวเอง defaultTextMessage.setContent จะต้องหลบหนี ("ยินดีต้อนรับสู่ <a href =/" http://blog.csdn.net/j086924/ " // defaultTextMessage.setContent (getMainMenu ()); // แปลงวัตถุข้อความเป็น XML String respMessage = MessageUtil.TextMessAgetOxml (defaultTextMessage); // ข้อความถ้า (msgtype.equals (MessageUtil.MessSage_type_text)) {// respcontent = "สวัสดีคุณกำลังส่งข้อความ!"; // ตอบกลับข้อความ TextMessage TextMessage = new TextMessage (); // textMessage.settousername (tousername); // textMessage.setFromusername (จากชื่อเพลง); // หมายเหตุที่นี่ไม่เช่นนั้นข้อความจะไม่สามารถตอบกลับไปยังผู้ใช้ textMessage.settousername (จากชื่ออัสบันทึกชื่อ); TextMessage.setFromusername (Tousername); TextMessage.setCreateTime (วันที่ใหม่ (). getTime ()); TextMessage.SetMsgType (MessageUtil.MessSage_Type_Text); TextMessage.SetFuncFlag (0); respcontent = "สวัสดีข้อความที่คุณส่งคือ:"+requestmap.get ("เนื้อหา"); TextMessage.setContent (respcontent); respmessage = messageUtil.TextMessAgetOxml (textMessage); } // ข้อความภาพอื่น ๆ ถ้า (msgtype.equals (MessageUtil.messsage_type_image)) {imageMessage imageMessage = ใหม่ imageMessage (); imageMessage.settousername (Fromusername); imageMessage.setFromusername (tousername); imageMessage.setCreateTime (วันที่ใหม่ (). getTime ()); imageMessage.setMsgType (MessageUtil.messsage_type_image); //respcontent=RequestMap.get("Picurl "); imageMessage.setpicurl ("http://img24.pplive.cn//2013//07//24//12103112092_230x306.jpg"); respmessage = messageUtil.imageMessagetoxML (imagemessage); } // ที่ตั้งทางภูมิศาสตร์อื่น ๆ ถ้า (msgtype.equals (MessageUtil.MessSage_Type_Location)) {สถานที่ตั้ง LocationMessage = new LocationMessage (); LocationMessage.SettouserName (FromUSERNAME); LocationMessage.setFromusername (tousername); LocationMessage.setCreateTime (วันที่ใหม่ (). getTime ()); LocationMessage.setMsgType (MessageUtil.MessSage_Type_Location); locationMessage.setLocation_x (requestmap.get ("location_x")); locationMessage.setLocation_y (requestmap.get ("location_y")); LocationMessage.setscale (requestmap.get ("สเกล")); locationMessage.setLabel (requestmap.get ("ฉลาก")); RespMessage = MessageUtil.LocationMessagetOxML (LocationMessage); } // ข้อความวิดีโออื่น ๆ ถ้า (msgtype.equals (MessageUtil.MessSage_Type_Video)) {videoMessage videoMessage = videoMessage ใหม่ (); VideoMessage.SettouserName (FromUSERNAME); Videomessage.setFromusername (Tousername); Videomessage.setCreateTime (วันที่ใหม่ (). getTime ()); Videomessage.setMsgType (MessageUtil.MessSage_Type_Video); VideoMessage.SetMediaID (requestMap.get ("MediaID")); VideoMessage.setthumbmediaid (requestmap.get ("Thumbmediaid")); RespMessage = MessageUtil.Videomessagetoxml (วิดีโอเทอร์เมส); } // ลิงก์ข้อความอื่นถ้า (msgtype.equals (MessageUtil.MessSage_type_link)) {linkMessage linkMessage = new LinkMessage (); LinkMessage.settousername (Fromusername); linkMessage.setFromusername (tousername); linkMessage.setCreateTime (วันที่ใหม่ (). getTime ()); linkMessage.setMsgType (MessageUtil.MessSage_type_link); linkMessage.settitle (requestmap.get ("ชื่อ")); linkMessage.setDescription (requestmap.get ("คำอธิบาย")); linkMessage.seturl (requestmap.get ("url")); respmessage = messageUtil.linkMessagetoxML (linkMessage); } // ข้อความเสียงอื่นถ้า (msgtype.equals (messageutil.messsage_type_voice)) {voicemessage voicemessage = new voicemessage (); Voicemessage.settousername (Fromusername); Voicemessage.setFromusername (tousername); Voicemessage.setCreateTime (วันที่ใหม่ (). getTime ()); Voicemessage.setMsgType (MessageUtil.messsage_type_voice); voicemessage.setmediaid (requestmap.get ("mediaid")); voicemessage.setFormat (requestmap.get ("รูปแบบ")); respmessage = messageutil.voicemessagetoxml (voicemessage); } // เหตุการณ์ผลักดันอื่นถ้า (msgtype.equals (MessageUtil.MessSage_type_Event)) {// ประเภทเหตุการณ์สตริง EventType = requestMap.get ("เหตุการณ์"); // สมัครสมาชิกถ้า (EventType.equals (MessageUtil.Event_Type_Subscribe)) {respcontent = "ขอบคุณสำหรับความสนใจของคุณ!"; } // ยกเลิกการสมัครอื่นถ้า (EventType.equals (MessageUtil.Event_Type_Unsubsribe)) {// System.out.println ("ยกเลิกการสมัคร"); } อื่นถ้า (EventType.equals (MessageUtil.Event_Type_Click)) {// ระบบการประมวลผลข้อความเมนูที่กำหนดเองระบบการประมวลผล. }}} catch (Exception e) {// toDo catch block catch auto-generated e.printstacktrace (); } Return Respmessage; } สตริงคงที่สาธารณะ getMainMenu () {StringBuffer buffer = new StringBuffer (); buffer.append ("สวัสดีฉันเป็นจอนโปรดตอบกลับบริการเลือกหมายเลข:") ผนวก ("/n"); buffer.append ("1. บล็อกของฉัน") ผนวก ("/n"); buffer.append ("/n"); buffer.append ("2. Song on Demand"). ผนวก ("/n"); buffer.append ("3. เกมคลาสสิค") ผนวก ("/n"); buffer.append ("4. แชทและเล่นไพ่") ผนวก ("/n/n"); buffer.append ("ตอบกลับ"+"0"+"เมนูช่วยเหลือแสดง"); return buffer.toString (); - 4) MessageUtil.java Help Class รวมถึงคำจำกัดความคงที่และการแปลงข้อความและการประมวลผล XML
แพ็คเกจ cn.jon.wechat.utils; นำเข้า Java.io.InputStream; นำเข้า java.io.writer; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า org.dom4j.document; นำเข้า org.dom4j.element; นำเข้า org.dom4j.io.saxReader; นำเข้า cn.jon.wechat.message.req.imageMessage; นำเข้า cn.jon.wechat.message.req.linkMessage; นำเข้า cn.jon.wechat.message.req.locationMessage; นำเข้า cn.jon.wechat.message.req.videomessage; นำเข้า cn.jon.wechat.message.req.voicemessage; นำเข้า cn.jon.wechat.message.req.voicemessage; นำเข้า cn.jon.wechat.message.resp.textmessage; นำเข้า cn.jon.wechat.message.resp.musicmessage; นำเข้า cn.jon.wechat.message.resp.textmessage; นำเข้า cn.jon.wechat.message.resp.textmessage; นำเข้า cn.jon.wechat.message.resp.textmessage; นำเข้า cn.jon.wechat.message.resp.textmessage; นำเข้า com.thoughtworks.xstream.xstream; นำเข้า com.thoughtworks.xstream.core.util.quickwriter; นำเข้า com.thoughtworks.xstream.io.hierarchicalstreamwriter; นำเข้า com.thoughtworks.xstream.io.xml.prettyprintwriter; นำเข้า com.thoughtworks.xstream.io.xml.xppdriver; / *** คลาสการประมวลผลข้อความต่าง ๆ* @author jon*/ คลาสสาธารณะ MessageUtil {/ *** ประเภทข้อความ*/ สตริงสุดท้ายคงที่สาธารณะ messsage_type_text = "text"; / *** ประเภทเพลง*/ สตริงสุดท้ายคงที่ messsage_type_music = "เพลง"; / *** ประเภทรูปภาพ*/ สตริงสุดท้ายคงที่ messsage_type_news = "ข่าว"; / *** ประเภทวิดีโอ*/ สตริงสุดท้ายคงที่สาธารณะ messsage_type_video = "วิดีโอ"; / *** ประเภทภาพ*/ สตริงสุดท้ายคงที่ messsage_type_image = "image"; / *** ประเภทลิงค์*/ สตริงสุดท้ายคงที่ messsage_type_link = "ลิงก์"; / *** ประเภทที่ตั้งทางภูมิศาสตร์*/ สตริงสุดท้ายคงที่สาธารณะ messsage_type_location = "ตำแหน่ง"; / *** ประเภทเสียง*/ สตริงสุดท้ายคงที่ messsage_type_voice = "เสียง"; / *** ประเภทพุช*/ สตริงสุดท้ายคงที่ messsage_type_event = "เหตุการณ์"; / ** * ประเภทเหตุการณ์: สมัครสมาชิก (สมัครสมาชิก) */ สตริงสุดท้ายคงสุดท้ายสุดท้าย Event_Type_Subscribe = "สมัครสมาชิก"; / ** * ประเภทเหตุการณ์: ยกเลิกการสมัคร (ยกเลิกการสมัคร) */ สตริงสุดท้ายคงที่สาธารณะ event_type_unsubscribe = "ยกเลิกการสมัคร"; / ** * ประเภทเหตุการณ์: คลิก (เมนูที่กำหนดเองคลิกเหตุการณ์) */ สตริงสุดท้ายคงที่ event_type_click = "คลิก"; /** * * คำขอแยกวิเคราะห์ XML ที่ส่งโดย weChat */@suppresswarnings ("ไม่ได้ตรวจสอบ") แผนที่สาธารณะคงที่ <สตริง, สตริง> parexml (httpservletrequest Request) โยนข้อยกเว้น {// การจัดเก็บผลการแยกวิเคราะห์ // รับสตรีมอินพุตจากคำขออินพุตอินพุทสตรีม = request.getInputStream (); // อ่านอินพุตสตรีม SaxReader reader = new SaxReader (); เอกสารเอกสาร = reader.read (inputStream); // รับองค์ประกอบองค์ประกอบรูท XML root = document.getRootElement (); // รับโหนดลูกทั้งหมดของรายการองค์ประกอบรูท <Element> ElementList = root.Elements (); // transfuse โหนดเด็กทั้งหมดเพื่อรับเนื้อหาคลาสข้อมูลสำหรับ (องค์ประกอบ elem: elementList) {reqmap.put (elem.getName (), elem.getText ()); } // ปล่อยทรัพยากร inputstream.close (); inputStream = null; ส่งคืน reqmap; } / ** * แปลงข้อความตอบกลับเป็น xml เพื่อส่งคืน * text object เป็น xml * / สตริงคงที่สาธารณะ textmessagetoxml (textMessage textMessage) {xstream.alias ("xml", textMessage.getClass ()); return xstream.toxml (textMessage); } / ** * การแปลงวัตถุเสียงเป็น xml * * / สตริงคงที่สาธารณะ voicemessagetoxml (วอยซ์เซสจี้วอยซ์เซจ) {xstream.alias ("xml", voicemessage.getclass ()); return xstream.toxml (voicemessage); } / ** * การแปลงวัตถุวิดีโอเป็น xml * * / สตริงคงที่พริสตจักรพรีมาเจ็กซ็อกซ์มม. (วิดีโอเทศกาลวิดีโอเซจ) {xstream.alias ("xml", videoMessage.getClass ()); return xstream.toxml (videomessage); } / ** * การแปลงวัตถุเพลงเป็น xml * * / สตริงสแตติกสาธารณะ musicmessagetoxml (MusicMessage MusicMessage) {xstream.alias ("XML", MusicMessage.getClass ()); return xstream.toxml (MusicMessage); } / ** * การแปลงวัตถุกราฟิกเป็น xml * * / สตริงคงที่สาธารณะ newsmessagetoxml (NewsMessage NewsMessage) {xstream.alias ("XML", NewsMessage.getClass ()); xstream.alias ("รายการ", บทความใหม่ (). getClass ()); return xstream.toxml (NewsMessage); } / ** * แปลงวัตถุภาพเป็น xml * * / สตริงคงที่สาธารณะ imagemessagetoxml (imageMessage imageMessage) {xstream.alias ("xml", imageMessage.getClass ()); return xstream.toxml (imageMessage); } / ** * แปลงวัตถุลิงก์เป็น xml * * / สตริงคงที่สาธารณะ linkMessagetoxml (linkMessage linkMessage) {xstream.alias ("xml", linkMessage.getClass ()); return xstream.toxml (LinkMessage); } / ** * แปลงวัตถุ geolocation เป็น xml * * / สตริงคงที่ public locationMessagetOxml (locationMessage locationMessage) {xstream.alias ("xml", locationMessage.getClass ()); return xstream.toxml (LocationMessage); } /*** ขยาย Xstream เพื่อรองรับบล็อก cdata** /ส่วนตัว Xstream Xstream = ใหม่ xstream (ใหม่ xppdriver () {public hierarchicalStreamWriter CreateWriter (นักเขียน out) {ส่งคืน prettyprintwriter ใหม่ (out) {// เพิ่มแท็ก cdata ทั้งหมด startNode (String, Class clazz) {super.startnode (ชื่อ, clazz); - - 5) Basemessage.java ข้อความฐานข้อความ (รวมถึง: บัญชีนักพัฒนาบัญชี WeChat, บัญชีผู้ใช้, เวลาการสร้าง, ประเภทข้อความ, ตัวแปรรหัสข้อความ) ข้อความวิดีโอและข้อความภาพจะสืบทอดคลาสฐานนี้และบนพื้นฐานนี้มันจะขยายตัวแปรของตัวเอง
แพ็คเกจ cn.jon.wechat.message.req; /** * คลาสฐานข้อความ (บัญชีผู้ใช้-สาธารณะทั่วไป) * @author Jon */คลาสสาธารณะ basemessage {// นักพัฒนา WeChat ID ส่วนตัวสตริง tousername; // บัญชีผู้ส่ง (หนึ่ง openId) สตริงส่วนตัวจากชื่ออัสบันทึก; // เวลาในการสร้างข้อความ (จำนวนเต็ม) createTime ส่วนตัวยาว; // ประเภทข้อความ (ข้อความ/ภาพ/ตำแหน่ง/ลิงค์ ... ) สตริงส่วนตัว msgtype; // รหัสข้อความ 64-bit string ส่วนตัว msgid; basemessage สาธารณะ () {super (); // todo toDo ที่สร้างขึ้นใหม่ stub stub} basemessage สาธารณะ (String tousername, String fromusername, Long CreateTime, String msgtype, String msgid) {super (); tousername = tousername; fromusername = fromusername; createTime = createTime; msgType = msgType; msgid = msgid; } สตริงสาธารณะ getTouSerName () {return tousername; } โมฆะสาธารณะ settername (สตริง tousername) {tousername = tousername; } สตริงสาธารณะ getFromuserName () {return fromusername; } โมฆะสาธารณะ setFromuserName (สตริง fromusername) {fromusername = fromusername; } สาธารณะยาว getCreateTime () {return createTime; } โมฆะสาธารณะ setCreateTime (Long createTime) {createTime = createTime; } สตริงสาธารณะ getMsgType () {return msgType; } โมฆะสาธารณะ setMsGType (สตริง msgType) {msgType = msgType; } สตริงสาธารณะ getMSGID () {return msGID; } โมฆะสาธารณะ setMSGID (สตริง msGID) {msGID = msGID; - 6) TextMessage.java ข้อความที่สืบทอดมาจากคลาสฐานใน 5 ขยายแอตทริบิวต์เนื้อหา
แพ็คเกจ cn.jon.wechat.message.req; /*** ข้อความ* @author jon*/คลาสสาธารณะ textMessage ขยาย basemessage {// เนื้อหาข้อความสตริงเนื้อหาส่วนตัว; สตริงสาธารณะ getContent () {ส่งคืนเนื้อหา; } โมฆะสาธารณะ setContent (เนื้อหาสตริง) {this.content = เนื้อหา; -7) ข้อความภาพ imageMessage.java
แพ็คเกจ cn.jon.wechat.message.req; /*** ข้อความรูปภาพ* @author Jon*/ImageMessage คลาสสาธารณะขยาย basemessage {// pic link สตริงส่วนตัว picurl; สตริงสาธารณะ getPicurl () {return picurl; } โมฆะสาธารณะ setpicurl (สตริง picurl) {picurl = picurl; - 8) ข้อความวิดีโอ Java
แพ็คเกจ cn.jon.wechat.message.req; VideoMessage คลาสสาธารณะขยาย basemessage {Private String MediAid; สตริงส่วนตัว Thumbmediaid; Public String getMediaid () {return medicleid; } โมฆะสาธารณะ setMediaid (String MediAid) {this.mediaid = mediid; } สตริงสาธารณะ getThumbMediaid () {return thumbmediaid; } โมฆะสาธารณะ setthumbmediaid (String thumbmediaid) {this.thumbmediaid = thumbmediaid; -คลาสข้อความอื่น ๆ สามารถทำได้ด้วยตัวเองตามเอกสารของนักพัฒนา นอกจากนี้นักพัฒนายังสามารถสมัครบัญชีทดสอบแพลตฟอร์มสาธารณะเพื่อทดสอบเนื้อหาที่เกี่ยวข้องของการพัฒนา
บทความนี้ได้รวบรวมไว้ใน "บทสรุปการสอนการพัฒนา Android WeChat" และ "สรุปการสอนการพัฒนา Java WeChat" ยินดีต้อนรับทุกคนให้เรียนรู้และอ่าน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น