国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

慕課網_《初識Java微信公眾號開發》學習總結

PrototypeZ / 3133人閱讀

摘要:時間年月日星期五說明本文部分內容均來自慕課網。本套課程介紹微信公眾號開發,主要涉及公眾號介紹編輯模式介紹開發模式介紹等。慕課網是垂直的互聯網技能免費學習網站。

時間:2017年08月11日星期五
說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com
教學源碼:https://github.com/zccodere/s...
學習源碼:https://github.com/zccodere/s...

第一章:課程介紹 1-1 課程簡介

面向人群

對微信公眾號開發感興趣
有一定Java開發經驗或基礎

課程介紹

介紹本套課程學習內容、開發語言等
微信公眾號介紹、申請以及后臺設置詳解
編輯模式下的消息回復、菜單建立、素材管理等
開發前的環境搭建以及工具準備
開發者模式的切換、設置以及消息的接收與響應
百度BEA服務器的搭建、代碼上傳
第二章:公眾號介紹 2-1 公眾號與微信的區別

公眾號與微信區別

2-2 公眾號類型介紹

公眾號類型介紹

最新公眾號類型

企業號與服務號、訂閱號的區別

2-3 公眾號申請

公眾號申請

微信公眾平臺:https://mp.weixin.qq.com/
2-4 微信公眾平臺

微信公眾平臺介紹

微信公眾平臺是騰訊為了讓用戶申請和管理微信公眾賬號而推出的一個WEB平臺

第三章:編輯模式介紹 3-1 自動回復

本章內容

在編輯模式下實現消息自動回復、菜單創建;以及在微信公眾號平臺推送消息給關注用戶。

3-2 素材管理

單圖文與多圖文

3-3 自定義菜單

自定義菜單有兩種類型

發送信息:click類型
跳轉到網頁:view類型

第四章:開發環境搭建 4-1 環境準備

開發環境準備

1.一個微信公眾號
2.外網映射工具(開發調試)
與微信對接的url要具備以下條件:
    --在公網上能夠訪問
    --端口只支持80端口

映射工具

ngrok可以將內網映射到公網上面,這樣就可以在公網訪問你的本地網絡服務

ngrok用法

1.下載ngrok.xex可執行程序,然后在DOS輸入以下命令
2.ngrok http 8080
3.ngrok –config ngrok.cfg –subdomain example 8080
幫助文檔:https://natapp.cn/

第五章:開發者模式介紹 5-1 數據交互原理

開發模式

數據交互原理

5-2 開發模式接入

接入指南

地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

項目搭建

創建一個名為wxdevaccess的maven項目,POM文件如下


    4.0.0

    com.myimooc
    wxdevaccess
    0.0.1-SNAPSHOT
    jar

    wxdevaccess
    http://maven.apache.org

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.1.RELEASE
         
    

    
        UTF-8
        UTF-8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
          commons-codec
          commons-codec
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
    

說明:由于條件限制,此項目代碼均沒有進行測試,這里只是顯示大概開發過程。

代碼演示:
1.編寫AccressReqVo類

package com.myimooc.wxdevaccess.domain;

/**
 * 服務器驗證請求Vo
 * @author ZhangCheng on 2017-08-11
 *
 */
public class AccressReqVo {
    
    private String signature;
    
    private String timestamp;
    
    private String nonce;
    
    private String echostr;

    @Override
    public String toString() {
        return "AccressReqVo [signature=" + signature + ", timestamp=" + timestamp + ", nonce=" + nonce + ", echostr="
                + echostr + "]";
    }

    public String getSignature() {
        return signature;
    }

    public void setSignature(String signature) {
        this.signature = signature;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }

    public String getNonce() {
        return nonce;
    }

    public void setNonce(String nonce) {
        this.nonce = nonce;
    }

    public String getEchostr() {
        return echostr;
    }

    public void setEchostr(String echostr) {
        this.echostr = echostr;
    }
}

2.編寫AccessRest類

package com.myimooc.wxdevaccess.rest;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.myimooc.wxdevaccess.domain.AccressReqVo;
import com.myimooc.wxdevaccess.util.CheckUtils;

/**
 * 開發模式接入
 * @author ZhangCheng on 2017-08-11
 *
 */
@RestController
public class AccessRest {
    
    /**
     * 接收微信服務器發送的GET驗證請求
     */
    @GetMapping("wx")
    public String access(AccressReqVo vo){
        if(CheckUtils.checkSignature(vo)){
            return vo.getEchostr();
        }
        return "error";
    }
}

3.編寫CheckUtils類

package com.myimooc.wxdevaccess.util;

import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Objects;

import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.myimooc.wxdevaccess.domain.AccressReqVo;

/**
 * 開發模式接入-服務器驗證-校驗工具類
 * @author ZhangCheng on 2017-08-11
 *
 */
public class CheckUtils {
    
    private static final Logger logger = LoggerFactory.getLogger(CheckUtils.class);
    
    /**
     * 開發者模式-開發者自己填寫的 token (令牌)
     */
    private static final String token = "myimooc";
    
    /**
     * 功能:驗證消息的確來自微信服務器
     */
    public static boolean checkSignature(AccressReqVo vo){
        
        logger.info("驗證:{}",vo.toString());
        
        String[] arr = new String[]{token,vo.getTimestamp(),vo.getNonce()}; 
        // 排序
        Arrays.sort(arr);
        // 生成字符串
        StringBuffer content = new StringBuffer();
        for ( int i=0;i
5-3 接收消息與響應

消息類型

文本消息:text
圖片消息:image
語音消息:voice
視頻消息:video
鏈接消息:link
地理位置:location
事件推送:event
    --關注:subscribe
    --取消關注:unsubscribe
    --菜單點擊:CLICK、VIEW

代碼演示:

1.編寫TextMessage類

package com.myimooc.wxdevaccess.domain;

/**
 * 文本消息-向微信接口發起請求Vo
 * @author ZhangCheng on 2017-08-11
 *
 */
public class TextMessage {
    
    private String ToUserName;
    
    private String FromUserName;
    
    private Long CreateTime;
    
    private String MsgType;
    
    private String Content;
    
    private String MsgId;

    @Override
    public String toString() {
        return "TextMessage [ToUserName=" + ToUserName + ", FromUserName=" + FromUserName + ", CreateTime=" + CreateTime
                + ", MsgType=" + MsgType + ", Content=" + Content + ", MsgId=" + MsgId + "]";
    }

    public String getToUserName() {
        return ToUserName;
    }

    public void setToUserName(String toUserName) {
        ToUserName = toUserName;
    }

    public String getFromUserName() {
        return FromUserName;
    }

    public void setFromUserName(String fromUserName) {
        FromUserName = fromUserName;
    }

    public Long getCreateTime() {
        return CreateTime;
    }

    public void setCreateTime(Long createTime) {
        CreateTime = createTime;
    }

    public String getMsgType() {
        return MsgType;
    }

    public void setMsgType(String msgType) {
        MsgType = msgType;
    }

    public String getContent() {
        return Content;
    }

    public void setContent(String content) {
        Content = content;
    }

    public String getMsgId() {
        return MsgId;
    }

    public void setMsgId(String msgId) {
        MsgId = msgId;
    }
    
    
}

2.編寫EventMessage類

package com.myimooc.wxdevaccess.domain;

/**
 * 事件推送-向微信接口發起請求Vo
 * @author ZhangCheng on 2017-08-11
 *
 */
public class EventMessage {
    
    private String ToUserName;
    
    private String FromUserName;
    
    private Long CreateTime;
    
    private String MsgType;
    
    private String Event;
    
    @Override
    public String toString() {
        return "EventMessage [ToUserName=" + ToUserName + ", FromUserName=" + FromUserName + ", CreateTime="
                + CreateTime + ", MsgType=" + MsgType + ", Event=" + Event + "]";
    }

    public String getToUserName() {
        return ToUserName;
    }

    public void setToUserName(String toUserName) {
        ToUserName = toUserName;
    }

    public String getFromUserName() {
        return FromUserName;
    }

    public void setFromUserName(String fromUserName) {
        FromUserName = fromUserName;
    }

    public Long getCreateTime() {
        return CreateTime;
    }

    public void setCreateTime(Long createTime) {
        CreateTime = createTime;
    }

    public String getMsgType() {
        return MsgType;
    }

    public void setMsgType(String msgType) {
        MsgType = msgType;
    }

    public String getEvent() {
        return Event;
    }

    public void setEvent(String event) {
        Event = event;
    }
    
    
    
}

3.編寫MessageUtils類

package com.myimooc.wxdevaccess.util;

import java.util.Date;

import com.myimooc.wxdevaccess.domain.TextMessage;

/**
 * 消息類型及工具類
 * @author ZhangCheng on 2017-08-11
 *
 */
public class MessageUtils {
    
    public static final String MESSAGE_TEXT = "text";
    public static final String MESSAGE_IMAGE = "image";
    public static final String MESSAGE_VOICE = "voice";
    public static final String MESSAGE_VIDEO = "video";
    public static final String MESSAGE_LINK = "link";
    public static final String MESSAGE_LOCATION = "location";
    public static final String MESSAGE_EVENT = "event";
    public static final String MESSAGE_SUBSCRIBE = "subscribe";
    public static final String MESSAGE_UNSUBSCRIBE = "unsubscribe";
    public static final String MESSAGE_CLICK = "CLICK";
    public static final String MESSAGE_VIEW = "VIEW";
    
    public static TextMessage initText(String toUserName,String fromUserName,String content){
        TextMessage text = new TextMessage();
        text.setFromUserName(toUserName);
        text.setToUserName(fromUserName);
        text.setMsgType(MessageUtils.MESSAGE_TEXT);
        text.setCreateTime(new Date().getTime());
        text.setContent(content);
        return text;
    }
    
    /**
     * 主菜單
     */
    public static String menuText(){
        StringBuffer sb = new StringBuffer();
        sb.append("歡迎您的關注,請按照菜單提升進行操作:

");
        sb.append("1、課程介紹
");
        sb.append("2、慕課網介紹

");
        sb.append("回復?調出此菜單。");
        return sb.toString();
    }
    
    public static String firstMenu(){
        StringBuffer sb = new StringBuffer();
        sb.append("本套課程介紹微信公眾號開發,主要涉及公眾號介紹、編輯模式介紹、開發模式介紹等。");
        return sb.toString();
    }
    
    public static String secondMenu(){
        StringBuffer sb = new StringBuffer();
        sb.append("慕課網是垂直的互聯網IT技能免費學習網站。以獨家視頻教程、在線編程工具、學習計劃、"
                + "問答社區為核心特色。在這里,你可以找到最好的互聯網技術牛人,也可以通過免費的在線公"
                + "開視頻課程學習國內領先的互聯網IT技術。"
                + "慕課網課程涵蓋前端開發、PHP、Html5、Android、iOS、Swift等IT前沿技術語言,"
                + "包括基礎課程、實用案例、高級分享三大類型,適合不同階段的學習人群。"
                + "以純干貨、短視頻的形式為平臺特點,為在校學生、職場白領提供了一個迅速提升技能、共同分享進步的學習平臺。");
        return sb.toString();
    }
}

4.編寫MessageRest類

package com.myimooc.wxdevaccess.rest;

import java.util.Date;
import java.util.Objects;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import com.myimooc.wxdevaccess.domain.EventMessage;
import com.myimooc.wxdevaccess.domain.TextMessage;
import com.myimooc.wxdevaccess.util.MessageUtils;

/**
 * 處理消息請求與響應
 * @author ZhangCheng on 2017-08-11
 *
 */
@RestController
public class MessageRest {
    
    /**
     * 接收微信服務器發送的POST請求
     */
    @PostMapping("textmessage")
    public Object textmessage(TextMessage msg){
        // 文本消息
        if(Objects.equals(MessageUtils.MESSAGE_TEXT, msg.getMsgType())){
            TextMessage textMessage = new TextMessage();
            // 關鍵字 1
            if(Objects.equals("1", msg.getContent())){
                textMessage = MessageUtils.initText(msg.getToUserName(), msg.getFromUserName(), MessageUtils.firstMenu());
                return textMessage;
            }
            // 關鍵字 2
            if(Objects.equals("2", msg.getContent())){
                textMessage = MessageUtils.initText(msg.getToUserName(), msg.getFromUserName(), MessageUtils.secondMenu());
                return textMessage;
            }
            // 關鍵字 ?? 調出菜單
            if(Objects.equals("?", msg.getContent()) || Objects.equals("?", msg.getContent())){
                textMessage = MessageUtils.initText(msg.getToUserName(), msg.getFromUserName(), MessageUtils.menuText());
                return textMessage;
            }
            
            // 非關鍵字
            textMessage.setFromUserName(msg.getToUserName());
            textMessage.setToUserName(msg.getFromUserName());
            textMessage.setMsgType(MessageUtils.MESSAGE_TEXT);
            textMessage.setCreateTime(new Date().getTime());
            textMessage.setContent("您發送的消息是:" + msg.getContent());
            return textMessage;
        }
        return null;
    }
    
    /**
     * 接收微信服務器發送的POST請求
     */
    @PostMapping("eventmessage")
    public Object eventmessage(EventMessage msg){
        // 事件推送
        if(Objects.equals(MessageUtils.MESSAGE_EVENT, msg.getMsgType())){
            // 關注
            if(Objects.equals(MessageUtils.MESSAGE_SUBSCRIBE, msg.getEvent())){
                TextMessage text = new TextMessage();
                text = MessageUtils.initText(msg.getToUserName(), msg.getFromUserName(), MessageUtils.menuText());
                return text;
            }
        }
        return null;
    }
    
}
第六章:百度BAE的使用 6-1 百度BAE的使用

百度BAE介紹

百度應用引擎(BAE)是百度推出的網絡應用開發平臺,開發者不需要進行服務器的維護、設置等繁瑣的操作,只需要簡單的上傳自己的應用即可在網絡上訪問。

百度開放服務平臺

地址:http://developer.baidu.com/
搜索BAE(應用引擎)
地址:https://cloud.baidu.com/product/bae.html
使用BAE部署項目war包

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67601.html

相關文章

  • 課網_微信授權登錄》學習總結

    摘要:時間年月日星期六說明本文部分內容均來自慕課網。第六章公眾號與開發平臺關聯公眾號與開放平臺關聯情景說明當使用端進行微信授權登錄時,得到的和公眾號授權登錄時得到的不一樣。 時間:2017年08月12日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹...

    coordinate35 評論0 收藏0
  • 課網_Java微信公眾開發進階》學習總結

    摘要:時間年月日星期六說明本文部分內容均來自慕課網。慕課網教學源碼學習源碼第一章概述課程簡介本課程是在之前的初識微信公眾號開發課程基礎之上的。慕課網課程涵蓋前端開發等前沿技術語言,包括基礎課程實用案例高級分享三大類型,適合不同階段的學習人群。 時間:2017年08月12日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:http://img.m...

    Freelander 評論0 收藏0
  • 一份最中肯的Java學習路線+資源分享(拒絕傻逼式分享)

    摘要:因為某些原因,不方便在這里直接發送百度鏈接,關注我的微信公眾號面試通關手冊回復資源分享第一波即可領取。然后大家還有什么問題的話,可以在我的微信公眾號后臺面試通關手冊給我說或者加我微信,我會根據自己的學習經驗給了說一下自己的看法。 這是一篇針對Java初學者,或者說在Java學習路線上出了一些問題(不知道該學什么、不知道整體的學習路線是什么樣的) 第一步:Java基礎(一個月左右) 推薦...

    hearaway 評論0 收藏0
  • 全棧最后一公里 - Node.js 項目的線上服務器部署與發布

    摘要:沒有耐心閱讀的同學,可以直接前往學習全棧最后一公里。我下面會羅列一些,我自己錄制過的一些項目,或者其他的我覺得可以按照這個路線繼續深入學習的項目資源。 showImg(https://segmentfault.com/img/bVMlke?w=833&h=410); 本文技術軟文,閱讀需謹慎,長約 7000 字,通讀需 5 分鐘 大家好,我是 Scott,本文通過提供給大家學習的方法,...

    Nosee 評論0 收藏0

發表評論

0條評論

PrototypeZ

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<