最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 微信公眾號(hào)開(kāi)發(fā)相關(guān)總結(jié)

 更新時(shí)間:2021年05月25日 11:42:29   作者:youcong  
公眾號(hào)作為主流的自媒體平臺(tái),有著不少人使用。這次以文本回復(fù)作為案例來(lái)講解Java相關(guān)的微信公眾號(hào)開(kāi)發(fā)

首先必須要有一個(gè)個(gè)人微信公眾號(hào)

個(gè)人微信公眾號(hào)相關(guān)的接口權(quán)限有限,不過(guò)用于個(gè)人學(xué)習(xí)體驗(yàn)一下足夠了,如圖:

然后進(jìn)入微信公眾后臺(tái),點(diǎn)擊基本配置,按照如下操作(點(diǎn)擊啟用,相當(dāng)于設(shè)置請(qǐng)求url為自己后臺(tái)的):

設(shè)置服務(wù)器URL、令牌、消息加解密密鑰(這個(gè)可以使用自動(dòng)生成的):

服務(wù)器URL至關(guān)重要,我在這里設(shè)置為我自己的域名http://www.youcongtech.com/wx-api。

這個(gè)wx-api就是后面對(duì)應(yīng)的接口(比如我發(fā)送某個(gè)關(guān)鍵字,返回對(duì)應(yīng)的信息)。
token可以設(shè)置復(fù)雜點(diǎn)。

效果圖

上面的演示效果來(lái)自本人微信公眾號(hào),并長(zhǎng)期運(yùn)行穩(wěn)定沒(méi)有任何問(wèn)題。

后臺(tái)路由代碼

package com.blog.springboot.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.blog.springboot.wx.service.WxService;
import com.blog.springboot.wx.util.SignUtil;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
 * 微信公眾號(hào)API
 * @author youcong
 * @date 2019-6-02
 */
@RestController
@RequestMapping("/wx_public_api")
@Api(tags = { "微信公眾號(hào)api" }, description = "微信公眾號(hào)api")
public class WxPublicApiController extends AbstractController{

	@Autowired
	private WxService wxService;
	
	
       /**
        * 微信公眾平臺(tái)服務(wù)器配置驗(yàn)證
        * @param request
        * @param response
        */
	   @GetMapping
	   @ApiOperation("微信公眾平臺(tái)服務(wù)器配置驗(yàn)證")
	   public void validate(HttpServletRequest request, HttpServletResponse response) {
	        // 微信加密簽名,signature結(jié)合了開(kāi)發(fā)者填寫(xiě)的token參數(shù)和請(qǐng)求中的timestamp參數(shù)、nonce參數(shù)。
	        String signature = request.getParameter("signature");
	        // 時(shí)間戳
	        String timestamp = request.getParameter("timestamp");
	        // 隨機(jī)數(shù)
	        String nonce = request.getParameter("nonce");
	        // 隨機(jī)字符串
	        String echostr = request.getParameter("echostr");

	        PrintWriter out = null;
	        try {
	            out = response.getWriter();
	            // 通過(guò)檢驗(yàn)signature對(duì)請(qǐng)求進(jìn)行校驗(yàn),若校驗(yàn)成功則原樣返回echostr,否則接入失敗
	            if (SignUtil.checkSignature(signature, timestamp, nonce)) {
	                out.print(echostr);
	            }
	        } catch (IOException e) {
	            e.printStackTrace();
	            logger.error(e.getMessage());
	            
	        } finally {
	            
	        	out.close();
	            out = null;
	        }
	    }

     /**
      * 關(guān)注推送消息
      * @param request
      * @param response
      */
	 @PostMapping
	 @ApiOperation("關(guān)注推送消息")
	 public void about(HttpServletRequest request, HttpServletResponse response) {
	        try {
	            request.setCharacterEncoding("UTF-8");
	        } catch (UnsupportedEncodingException e) {
	            e.printStackTrace();
	            logger.error(e.getMessage(),e);
	        }
	        response.setContentType("text/html;charset=UTF-8");

	        // 調(diào)用核心業(yè)務(wù)類接收消息、處理消息
	        String respMessage = wxService.newMessageRequest(request);

	        // 響應(yīng)消息
	        PrintWriter out = null;
	        try {
	            out = response.getWriter();
	            out.print(respMessage);
	        } catch (IOException e) {
	            e.printStackTrace();
	            logger.error(e.getMessage(),e);
	        } finally {
	            out.close();
	            out = null;
	        }
	    }
}

完整代碼

完整代碼已經(jīng)放到我個(gè)人的GitHub倉(cāng)庫(kù),地址為:https://github.com/developers-youcong/blog-springcloud-pro/tree/master/blog-wx-client

這是其中的子項(xiàng)目,功能主要是微信公眾平臺(tái)。

鑒于我個(gè)人主要維護(hù)的開(kāi)源項(xiàng)目尚未公開(kāi),有很多隱私信息等,所以將其中的微信公眾號(hào)模塊抽取出來(lái)放到我的新開(kāi)源項(xiàng)目blog-springcloud-pro中(此項(xiàng)目目前處于開(kāi)發(fā)中)。

微信公眾號(hào)模塊基本上換上自己的token、appid、appsecret并部署到線上就基本可用了。有任何問(wèn)題,可留言。

以上就是Java 微信公眾號(hào)開(kāi)發(fā)相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Java 微信公眾號(hào)開(kāi)發(fā)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用@JsonFormat的一個(gè)坑及解決

    使用@JsonFormat的一個(gè)坑及解決

    這篇文章主要介紹了使用@JsonFormat的一個(gè)坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • springboot如何通過(guò)不同的策略動(dòng)態(tài)調(diào)用不同的實(shí)現(xiàn)類

    springboot如何通過(guò)不同的策略動(dòng)態(tài)調(diào)用不同的實(shí)現(xiàn)類

    這篇文章主要介紹了springboot如何通過(guò)不同的策略動(dòng)態(tài)調(diào)用不同的實(shí)現(xiàn)類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • spring 操作elasticsearch查詢使用方法

    spring 操作elasticsearch查詢使用方法

    本篇文章主要介紹了spring 操作elasticsearch使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java中for、foreach、stream區(qū)別和性能比較詳解

    Java中for、foreach、stream區(qū)別和性能比較詳解

    for、foreach、stream都可以循環(huán)處理數(shù)據(jù),如果單純當(dāng)循環(huán)使用,for、foreach、stream哪個(gè)性能更好,這篇文章主要給大家介紹了關(guān)于Java中for、foreach、stream區(qū)別和性能的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Java基于drools做規(guī)則校驗(yàn)的實(shí)現(xiàn)

    Java基于drools做規(guī)則校驗(yàn)的實(shí)現(xiàn)

    工作中需要開(kāi)發(fā)一個(gè)規(guī)則服務(wù),提供各種規(guī)則,本文主要介紹了Java基于drools做規(guī)則校驗(yàn)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • MyBatis基礎(chǔ)支持DataSource實(shí)現(xiàn)源碼解析

    MyBatis基礎(chǔ)支持DataSource實(shí)現(xiàn)源碼解析

    這篇文章主要為大家介紹了MyBatis基礎(chǔ)支持DataSource實(shí)現(xiàn)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java中final變量使用總結(jié)

    Java中final變量使用總結(jié)

    這篇文章主要介紹了Java中final變量使用總結(jié),final關(guān)鍵字可用于變量聲明,一旦該變量被設(shè)定,就不可以再改變?cè)撟兞康闹?通常final定義的變量為常量,需要的朋友可以參考下
    2015-06-06
  • Arrays.sort如何實(shí)現(xiàn)降序排序

    Arrays.sort如何實(shí)現(xiàn)降序排序

    這篇文章主要介紹了Arrays.sort如何實(shí)現(xiàn)降序排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java實(shí)現(xiàn)的微信公眾號(hào)獲取微信用戶信息示例

    Java實(shí)現(xiàn)的微信公眾號(hào)獲取微信用戶信息示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的微信公眾號(hào)獲取微信用戶信息,結(jié)合實(shí)例形式分析了Java微信公眾號(hào)獲取微信用戶信息相關(guān)原理、步驟與操作注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • Elasticsearch學(xué)習(xí)之Terms?set?查詢

    Elasticsearch學(xué)習(xí)之Terms?set?查詢

    這篇文章主要為大家介紹了Elasticsearch學(xué)習(xí)Terms?set?查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論

宜城市| 安图县| 五常市| 钦州市| 东海县| 丹棱县| 河曲县| 文山县| 宽甸| 饶平县| 大足县| 十堰市| 新丰县| 黑河市| 灵川县| 工布江达县| 蓬溪县| 邵阳县| 三河市| 海林市| 东宁县| 娄烦县| 安龙县| 萨迦县| 嵩明县| 礼泉县| 比如县| 灯塔市| 田林县| 台山市| 濮阳县| 麦盖提县| 桂阳县| 仲巴县| 兴义市| 嘉义县| 曲水县| 武穴市| 东源县| 宁阳县| 高平市|