亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ù)類(lèi)接收消息、處理消息
	        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)文章

  • 如何使用@ConditionalOnExpression決定是否生效注釋

    如何使用@ConditionalOnExpression決定是否生效注釋

    這篇文章主要介紹了如何使用@ConditionalOnExpression決定是否生效注釋的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • JAVA?ImageIO.read方法報(bào)錯(cuò)/無(wú)效問(wèn)題及解決

    JAVA?ImageIO.read方法報(bào)錯(cuò)/無(wú)效問(wèn)題及解決

    這篇文章主要介紹了JAVA?ImageIO.read方法報(bào)錯(cuò)/無(wú)效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • JavaEE微框架Spring Boot深入解讀

    JavaEE微框架Spring Boot深入解讀

    spring框架作為JavaEE框架領(lǐng)域的一款重要的開(kāi)源框架,在企業(yè)應(yīng)用開(kāi)發(fā)中有著很重要的作用。接下來(lái)通過(guò)本文給大家介紹JavaEE微框架Spring Boot深入解讀,需要的朋友可以參考下
    2017-04-04
  • idea中使用git合并分支實(shí)踐

    idea中使用git合并分支實(shí)踐

    這篇文章主要介紹了idea中使用git合并分支實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java生成唯一id的幾種實(shí)現(xiàn)方式

    Java生成唯一id的幾種實(shí)現(xiàn)方式

    本文主要介紹了Java生成唯一id的幾種實(shí)現(xiàn)方式,主要介紹了5種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • XXL-Job端口額外占用問(wèn)題的解決方法小結(jié)

    XXL-Job端口額外占用問(wèn)題的解決方法小結(jié)

    最近博主在Spring整合XXL-JOB到項(xiàng)目時(shí)發(fā)現(xiàn)了個(gè)問(wèn)題,注冊(cè)執(zhí)行器需要額外占用端口,也就是我們每啟動(dòng)一個(gè)程序,除了程序本身的API端口外,還需要額外開(kāi)放一個(gè)執(zhí)行器端口,所以本文給大家分享了XXL-Job端口額外占用問(wèn)題的解決方法小結(jié),需要的朋友可以參考下
    2024-05-05
  • 利用feign調(diào)用返回object類(lèi)型轉(zhuǎn)換成實(shí)體

    利用feign調(diào)用返回object類(lèi)型轉(zhuǎn)換成實(shí)體

    這篇文章主要介紹了利用feign調(diào)用返回object類(lèi)型轉(zhuǎn)換成實(shí)體,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例

    Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例

    這篇文章主要介紹了Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java和C++通過(guò)new創(chuàng)建的對(duì)象有何區(qū)別?

    Java和C++通過(guò)new創(chuàng)建的對(duì)象有何區(qū)別?

    Java和C++都是面向?qū)ο蟮木幊陶Z(yǔ)言,然而Java和C++在創(chuàng)建對(duì)象時(shí)卻存在不同的方式,由于方式的不同導(dǎo)致在內(nèi)存中管理的不同。這篇文章主要給大家介紹了關(guān)于Java和C++通過(guò)new創(chuàng)建對(duì)象區(qū)別的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-11-11
  • SpringBoot將項(xiàng)目打成war包步驟解析

    SpringBoot將項(xiàng)目打成war包步驟解析

    這篇文章主要介紹了SpringBoot將項(xiàng)目打成war包步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論