freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

微信公眾賬號(hào)開發(fā)教程(java)-在線瀏覽

2024-09-06 16:18本頁(yè)面
  

【正文】 lgorithmException{42. ()。=46. //tmpStrnull(())false。51. 將字節(jié)數(shù)組轉(zhuǎn)換為十六進(jìn)制字符串*53. param54. return*/56. privateStringbyteArray)strDigest58. fori0。i{59. strDigestbyteToHexStr(byteArray[i])。strDigest。65. 將字節(jié)轉(zhuǎn)換為十六進(jìn)制字符串*67. param68. return*/70. privateStringmByte)Digit{039。39。,239。39。,439。39。,639。39。,839。39。,A39。39。,C39。39。,E39。39。72. char[]=char[2]。=amp。0X0F]。=amp。0X0F]。snew77. return78. }79. }package 。import 。/** * 請(qǐng)求校驗(yàn)工具類 * * author liufeng * date 20130518 */public class SignUtil { // 與接口配置信息中的Token要一致 private static String token = weixinCourse。 // 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序 (arr)。 for (int i = 0。 i++) { (arr[i])。 String tmpStr = null。 // 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密 byte[] digest = (().getBytes())。 } catch (NoSuchAlgorithmException e) { ()。 // 將sha1加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信 return tmpStr != null ? (()) : false。 for (int i = 0。 i++) { strDigest += byteToHexStr(byteArray[i])。 } /** * 將字節(jié)轉(zhuǎn)換為十六進(jìn)制字符串 * * param mByte * return */ private static String byteToHexStr(byte mByte) { char[] Digit = { 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。, 39。 }。 tempArr[0] = Digit[(mByte 4) amp。 tempArr[1] = Digit[mByte amp。 String s = new String(tempArr)。 }}這里唯一需要注意的就是SignUtil類中的成員變量token,這里賦予什么值,在接口配置信息中的Token就要填寫什么值,兩邊保持一致即可,沒有其他要求,建議用項(xiàng)目名稱、公司名稱縮寫等,我在這里用的是項(xiàng)目名稱weixinCourse。version=version=5. 6. servlet7. servletnamecoreServlet/servletname8. servletclass9. 10. /servletclass11. /servlet12. 13. !14. servletmapping15. servletnamecoreServlet/servletname16. urlpattern/coreServlet/urlpattern17. /servletmapping18. 19. welefilelist20. welefile/welefile21. /welefilelist22. /webapp?xml version= encoding=UTF8?webapp version= xmlns= xmlns:xsi= xsi:schemaLocation= servlet servletnamecoreServlet/servletname servletclass /servletclass /servlet ! urlpattern中配置的/coreServlet用于指定該Servlet的訪問路徑 servletmapping servletnamecoreServlet/servletname urlpattern/coreServlet/urlpattern /servletmapping welefilelist welefile/welefile /welefilelist/webapp到這里,所有編碼都完成了,就是這么簡(jiǎn)單。發(fā)布到服務(wù)器上后,我們?cè)跒g覽器里訪問CoreServlet,如果看到如下界面就表示我們的代碼沒有問題: 啊,代碼都報(bào)空指針異常了還說(shuō)證明沒問題?那當(dāng)然了,因?yàn)橹苯釉诘刂窓谠L問coreServlet,就相當(dāng)于提交的是GET請(qǐng)求,而我們什么參數(shù)都沒有傳,在驗(yàn)證的時(shí)候當(dāng)然會(huì)報(bào)空指針異常。接著點(diǎn)擊“提交”,如果程序?qū)懙臎]問題,并且URL、Token都填寫正確,可以在頁(yè)面最上方看到“提交成功”的提示,并會(huì)再次跳轉(zhuǎn)到開發(fā)模式設(shè)置界面,而且能夠看到“你已成為開發(fā)者”的提示,如下圖所示:?jiǎn)⒂瞄_發(fā)模式(下)這個(gè)時(shí)候就已經(jīng)成為開發(fā)者了,百般周折啊,哈哈,到這里還沒有完哦,還有最后一步工作就是將開發(fā)模式開啟。接下來(lái)要章節(jié)要講的就是如何接收、處理、響應(yīng)由微信服務(wù)器轉(zhuǎn)發(fā)的用戶發(fā)送給公眾帳號(hào)的消息,也就是完成CoreServlet中doPost方法的編寫。這里需要明確的是消息其實(shí)是由用戶發(fā)給你的公眾帳號(hào)的,消息先被微信平臺(tái)接收到,然后微信平臺(tái)會(huì)將該消息轉(zhuǎn)給你在開發(fā)模式接口配置中指定的URL地址。通用接口和自定義菜單接口只有拿到內(nèi)測(cè)資格才能調(diào)用,而內(nèi)測(cè)資格的申請(qǐng)也已經(jīng)關(guān)閉了,我們只有期待將來(lái)某一天微信會(huì)對(duì)大眾用戶開放吧,所以沒有內(nèi)測(cè)資格的用戶就不要再浪費(fèi)時(shí)間在這兩個(gè)接口上,只需要用好消息接口就可以了。對(duì)于消息的接收、響應(yīng)我們只需要關(guān)注上圖中的“4 消息推送”和“5 消息回復(fù)”就足夠了。消息推送中定義了我們將會(huì)接收到的消息類型有5種:文本消息、圖片消息、地理位置消息、鏈接消息和事件推送,其實(shí)語(yǔ)音消息我們也能夠接收到的,只不過(guò)拿不到具體的語(yǔ)音文件而以(需要內(nèi)測(cè)資格才能夠獲取語(yǔ)音文件)。消息的封裝接下來(lái)要做的就是將消息推送(請(qǐng)求)、消息回復(fù)(響應(yīng))中定義的消息進(jìn)行封裝,建立與之對(duì)應(yīng)的Java類(Java是一門面向?qū)ο蟮木幊陶Z(yǔ)言,封裝后使用起來(lái)更方便),下面的請(qǐng)求消息是指消息推送中定義的消息,響應(yīng)消息指消息回復(fù)中定義的消息。2. 3. /***5. *liufeng*20130519*/9. publicBaseMessage開發(fā)者微信號(hào) 11. privateToUserName。發(fā)送方帳號(hào)(一個(gè)OpenID) 13. privateFromUserName。消息創(chuàng)建時(shí)間long16. //String18. //long20. 21. publicgetToUserName()ToUserName。voidtoUserName)=27. }28. 29. publicgetFromUserName()FromUserName。voidfromUserName)=35. }36. 37. publicgetCreateTime()CreateTime。voidcreateTime)=43. }44. 45. publicgetMsgType()MsgType。voidmsgType)=51. }52. 53. publicgetMsgId()MsgId。voidmsgId)=59. }60. }package 。 // 發(fā)送方帳號(hào)(一個(gè)OpenID) private String FromUserName。 // 消息類型(text/image/location/link) private String MsgType。 public String getToUserName() { return ToUserName。 } public String getFromUserName() { return FromUserName。 } public long getCreateTime() { return CreateTime。 } public String getMsgType() { return MsgType。 } public long getMsgId() { return MsgId。 }}請(qǐng)求消息之文本消息[java] view plaincopyprint?1. package4. 文本消息*6. author7. date8. classextends{10. //String12. 13. publicgetContent()Content。voidcontent)=19. }20. }package 。 public String getContent() { return Content。 }}請(qǐng)求消息之圖片消息[java] view plaincopyprint?1. package4. 圖片消息*6. author7. date8. classextends{10. //String12. 13. publicgetPicUrl()PicUrl。voidpicUrl)=19. }20. }package 。 public String getPicUrl() { return PicUrl。 }}請(qǐng)求消息之地理位置消息[java] view plaincopyprint?1. package4. 地理位置消息*6. author7. date8. classextends{10. //String12. //String14. //String16. //String18. 19. publicgetLocation_X()Location_X。voidlocation_X)=25. }26. 27. publicgetLocation_Y()Location_Y。voidlocation_Y)=33. }34. 35. publicgetScale()Scale。voidscale)=41. }42. 43. publicgetLabel()Label。voidlabel)=49. }50. }package 。 // 地理位置經(jīng)度 private String Location_Y。 // 地理位置信息 private String Label。 } public void setLocation_X(String location_X) { Location_X = location_X。 } public void setLocation_Y(String location_Y) { Location_Y = location_Y。 } public void setScale(String scale) { Scale = scale。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1