WeChat二次開発用のさまざまなタイプのメッセージのカプセル化
この記事では主に Java WeChat の二次開発の 3 番目の部分を詳しく紹介します。興味のある方は参考にしてください。この記事の例は Java を共有します。 WeChat でのさまざまな種類のメッセージのカプセル化は参考用です。具体的な内容は次のとおりです
com.wtz.message.response パッケージを見つけて、新しいクラス Image.javapackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午8:38:37
* version:1.0
* description:图片的实体类
*/
public class Image {
//图片媒体ID
private String MediaId;
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
}
com .wtz.message.response パッケージを見つけて、新しいクラス ImageMessage.javapackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午8:49:57
* version:1.0
* description:图片消息类
*/
public class ImageMessage extends BaseMessage {
//图片对象
private Image image;
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
}
com.wtz.message.response パッケージを見つけて、新しいクラス Video.javapackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午9:02:14
* version:1.0
* description:视频的实体类
*/
public class Video {
//视频消息的媒体ID
private String MediaId;
//视频消息的标题
private String Title;
//视频消息的描述
private String Description;
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
}
com.wtz .message.response パッケージを見つけて、新しいクラス VideoMessage.javapackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午9:10:14
* version:1.0
* description:视频消息类
*/
public class VideoMessage extends BaseMessage{
//视频对象
private Video video;
public Video getVideo() {
return video;
}
public void setVideo(Video video) {
this.video = video;
}
}
com.wtz.message.response パッケージを見つけて、新しいクラス Voice.java を作成します package com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午9:21:47
* version:1.0
* description:语音消息实体类
*/
public class Voice {
//语音媒体编号
private String MediaId;
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
}
com.wtz.message .response パッケージを見つけて、新しいクラス VoiceMessage.java を作成しますpackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午9:44:58
* version:1.0</p>
* description:语音消息类
*/
public class VoiceMessage extends BaseMessage{
//语音对象
private Voice voice;
public Voice getVoice() {
return voice;
}
public void setVoice(Voice voice) {
this.voice = voice;
}
}
com.wtz.message.response パッケージを見つけて、新しいクラス Music.java を作成しますpackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午9:48:11
* version:1.0
* description:音乐消息实体类
*/
public class Music {
//音乐标题
private String Title;
//音乐描述
private String Description;
//音乐链接
private String MusicUrl;
//高品质音乐链接
private String HQMusicUrl;
//缩略图的媒体ID
private String ThumbMediaId;
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
public String getMusicUrl() {
return MusicUrl;
}
public void setMusicUrl(String musicUrl) {
MusicUrl = musicUrl;
}
public String getHQMusicUrl() {
return HQMusicUrl;
}
public void setHQMusicUrl(String hQMusicUrl) {
HQMusicUrl = hQMusicUrl;
}
public String getThumbMediaId() {
return ThumbMediaId;
}
public void setThumbMediaId(String thumbMediaId) {
ThumbMediaId = thumbMediaId;
}
}
com.wtz.message.response パッケージを見つけて、新しいクラスを作成します。 MusicMessage.javapackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午9:58:21
* <p>version:1.0</p>
* <p>description:音乐消息类</p>
*/
public class MusicMessage extends BaseMessage{
//音乐对象
private Music music;
public Music getMusic() {
return music;
}
public void setMusic(Music music) {
this.music = music;
}
}
com.wtz.message.response パッケージを見つけて、新しいクラスを作成します.javapackage com.wtz.message.response;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午10:05:29
* <p>version:1.0</p>
* <p>description:图文实体类</p>
*/
public class Article {
//图文标题
private String Title;
//图文描述
private String Description;
//图片链接,支持JPG,PNG格式,较好的效果为大图
private String PicUrl;
//图文消息跳转链接
private String Url;
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
public String getPicUrl() {
return PicUrl;
}
public void setPicUrl(String picUrl) {
PicUrl = picUrl;
}
public String getUrl() {
return Url;
}
public void setUrl(String url) {
Url = url;
}
}
com.wtz.message.response パッケージを見つけて、新しいクラスを作成します NewsMessage.javapackage com.wtz.message.response;
import java.util.List;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午10:16:22
* <p>version:1.0</p>
* <p>description:图文消息类</p>
*/
public class NewsMessage extends BaseMessage{
//图文条数
private int ArticleCount;
//多条图文消息信息,默认第一个item为大图
private List<Article> Articles;
public int getArticleCount() {
return ArticleCount;
}
public void setArticleCount(int articleCount) {
ArticleCount = articleCount;
}
public List<Article> getArticles() {
return Articles;
}
public void setArticles(List<Article> articles) {
Articles = articles;
}
}
新しいパッケージ com.wtz.message.request、新しいクラスを作成しますBaseMessage.javapackage com.wtz.message.request;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午10:53:23
* <p>version:1.0</p>
* <p>description:请求消息基类(普通用户->公众账号)</p>
* <p>站在服务器端的视角:接收信息</p>
*/
public class BaseMessage {
//开发者微信号
private String ToUserName;
//发送方账号(一个OpenId)
private String FromUserName;
//消息创建时间(整型)
private long CreateTime;
//消息类型
private String MsgType;
//消息ID,64位整型
private long 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 long getMsgId() {
return MsgId;
}
public void setMsgId(long msgId) {
MsgId = msgId;
}
}
com.wtz.message.request パッケージを見つけて、新しいクラスを作成します TextMessage.javapackage com.wtz.message.request;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午11:04:35
* <p>version:1.0</p>
* <p>description:文本消息</p>
*/
public class TextMessage extends BaseMessage{
//消息内容
private String Content;
public String getContent() {
return Content;
}
public void setContent(String content) {
Content = content;
}
}
com.wtz.message.request パッケージを見つけて、作成します新しいクラス ImageMessage.javapackage com.wtz.message.request;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午11:20:50
* <p>version:1.0</p>
* <p>description:图片消息</p>
*/
public class ImageMessage extends BaseMessage{
//图片链接
private String PicUrl;
//图片消息媒体ID
private String MediaId;
public String getPicUrl() {
return PicUrl;
}
public void setPicUrl(String picUrl) {
PicUrl = picUrl;
}
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
}
com.wtz.message.request パッケージを見つけて、新しいクラス VoiceMessage.javapackage com.wtz.message.request;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午11:27:40
* <p>version:1.0</p>
* <p>description:语音消息类</p>
*/
public class VoiceMessage extends BaseMessage {
//媒体ID
private String MediaId;
//语音格式
private String Format;
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
public String getFormat() {
return Format;
}
public void setFormat(String format) {
Format = format;
}
}
com.wtz.message.request パッケージを見つけますを作成し、新しいクラス VideoMessage.javapackage com.wtz.message.request;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 下午3:28:03
* <p>version:1.0</p>
* <p>description:视频消息类</p>
*/
public class VideoMessage extends BaseMessage {
//视频消息媒体ID
private String MediaId;
//视频消息缩略图的媒体ID
private String ThumbMediaId;
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
public String getThumbMediaId() {
return ThumbMediaId;
}
public void setThumbMediaId(String thumbMediaId) {
ThumbMediaId = thumbMediaId;
}
}
com.wtz.message.request パッケージを見つけ、新しいクラス LocatonMessage.javapackage com.wtz.message.request;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 下午3:27:40
* <p>version:1.0</p>
* <p>description:地理位置消息类</p>
*/
public class LocationMessage extends BaseMessage {
//地理位置纬度
private String Location_X;
//地理位置经度
private String Location_Y;
//地图缩放大小
private String Scale;
//地理位置信息
private String Label;
public String getLocation_X() {
return Location_X;
}
public void setLocation_X(String location_X) {
Location_X = location_X;
}
public String getLocation_Y() {
return Location_Y;
}
public void setLocation_Y(String location_Y) {
Location_Y = location_Y;
}
public String getScale() {
return Scale;
}
public void setScale(String scale) {
Scale = scale;
}
public String getLabel() {
return Label;
}
public void setLabel(String label) {
Label = label;
}
}
com.wtz.message を見つけます。 .request パッケージを作成し、新しいクラス LinkMessage.javapackage com.wtz.message.request;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 下午1:58:04
* <p>version:1.0</p>
* <p>description:链接消息类</p>
*/
public class LinkMessage extends BaseMessage {
//消息标题
private String Title;
//消息描述
private String Description;
//消息链接
private String Url;
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
public String getUrl() {
return Url;
}
public void setUrl(String url) {
Url = url;
}
}
新しいパッケージ com.wtz.message.event、新しいクラス BaseEventMessage.java を作成しますpackage com.wtz.message.event;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 上午10:44:09
* <p>version:1.0</p>
* <p>description:基础事件消息类</p>
*/
public class BaseEventMessage {
//开发者微信号
private String ToUserName;
//发送方账号(一个OpenID)
private String FromUserName;
//消息创建时间(整型)
private long CreateTime;
//消息类型
private String MsgType;
//事件类型
private String 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;
}
}
パッケージ com.wtz を見つけます.message.event を作成し、新しいクラス QRCodeEventMessage.javapackage com.wtz.message.event;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 下午3:24:30
* <p>version:1.0</p>
* <p>description:扫描带参数二维码事件类</p>
*/
public class QRCodeEventMessage extends BaseEventMessage{
//事件Key值
private String EventKey;
//用于换取二维码图片
private String Ticket;
public String getEventKey() {
return EventKey;
}
public void setEventKey(String eventKey) {
EventKey = eventKey;
}
public String getTicket() {
return Ticket;
}
public void setTicket(String ticket) {
Ticket = ticket;
}
}
パッケージを検索します。 com.wtz.message.event、新しいクラスを作成します。 SubscribeEventMessage.javapackage com.wtz.message.event;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 下午3:27:11
* <p>version:1.0</p>
* <p>description:关注/取消关注事件类</p>
*/
public class SubscribeEventMessage extends BaseEventMessage{
}
パッケージを検索します。 com.wtz.message.event を作成し、新しいクラス MenuEventMessage.javapackage com.wtz.message.event;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 下午3:32:42
* <p>version:1.0</p>
* <p>description:自定义菜单事件类</p>
*/
public class MenuEventMessage extends BaseEventMessage{
//事件Key值,与自定义菜单接口中Key值对应
private String EventKey;
public String getEventKey() {
return EventKey;
}
public void setEventKey(String eventKey) {
EventKey = eventKey;
}
}
パッケージ com.wtz.message イベントを見つけ、新しいクラス LocationEventMessage.javapackage com.wtz.message.event;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月20日 下午3:37:50
* <p>version:1.0</p>
* <p>description:上报地理位置事件类</p>
*/
public class LocationEventMessage extends BaseEventMessage{
//地理位置纬度
private String Latitude;
//地理位置经度
private String Longitude;
//地理位置精度
private String Precision;
public String getLatitude() {
return Latitude;
}
public void setLatitude(String latitude) {
Latitude = latitude;
}
public String getLongitude() {
return Longitude;
}
public void setLongitude(String longitude) {
Longitude = longitude;
}
public String getPrecision() {
return Precision;
}
public void setPrecision(String precision) {
Precision = precision;
}
}
パッケージ com.wtz.util の下で ProcessService.java クラスを見つけ、さまざまなタイプのメッセージに応答するように dealRequest メソッドを変更しますpackage com.wtz.util;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.wtz.message.response.TextMessage;
/**
* @author wangtianze QQ:864620012
* @date 2017年4月19日 下午8:04:14
* <p>version:1.0</p>
* <p>description:核心服务类</p>
*/
public class ProcessService {
public static String dealRequest(HttpServletRequest request){
//XML格式的消息数据
String respXml = "";
//默认返回的文本消息内容
String respContent = "未知的消息类型";
//调用parseXml方法解析请求消息
Map<String, String> requestMap;
try {
requestMap = MessageUtil.parseXml(request);
//发送方账号
String fromUserName = requestMap.get("FromUserName");
//开发者微信号
String toUserName = requestMap.get("ToUserName");
//消息类型
String MsgType = requestMap.get("MsgType");
//回复文本消息
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(fromUserName);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)){
respContent = "您发送的是文本消息";
}else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)){
respContent = "您发送的是图片消息";
}else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)){
respContent = "您发送的是语音消息";
}else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VIDEO)){
respContent = "您发送的是视频消息";
}else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)){
respContent = "您发送的是地理位置消息";
}else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)){
respContent = "您发送的是链接消息";
}else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)){
//事件类型
String eventType = requestMap.get("Event");
if(eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)){
respContent = "感谢您的关注";
}else if(eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)){
//TODO 取消订阅后用户不会再收到公众号发送的消息,因此不需要回复
}else if(eventType.equals(MessageUtil.EVENT_TYPE_SCAN)){
//TODO 处理扫描带参数二维码事件
}else if(eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)){
//TODO 处理上报地理位置事件
}else if(eventType.equals(MessageUtil.EVENT_TYPE_CLICK)){
//TODO 处理菜单点击事件
}
}
//设置文本消息的内容
textMessage.setContent(respContent);
//将文本消息对象转换成xml
respXml = MessageUtil.messageToXml(textMessage);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return respXml;
}
}
【関連推奨事項】
1.
WeChatパブリックアカウントプラットフォームのソースコードダウンロードWeChat投票ソースコード以上がWeChat二次開発用のさまざまなタイプのメッセージのカプセル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

最高の暗号通貨取引および分析プラットフォームには、次のものが含まれます。1。OKX:トレーディングボリュームの世界のナンバーワン、複数のトランザクションをサポートし、AI市場分析とチェーン上のデータ監視を提供します。 2。Binance:世界最大の交換、詳細な市場条件と新しい通貨の初めての提供を提供します。 3。SESAMEオープンドア:スポット取引とOTCチャネルで知られている、自動取引戦略を提供します。 4。CoinMarketCap:20,000通貨をカバーする権威ある市場データプラットフォーム。 5。COINGECKO:コミュニティの感情分析で知られることは、DefiおよびNFTトレンドの監視を提供します。 6。非小口座:国内の市場プラットフォーム。Aシェアと通貨市場の間の連携の分析を提供します。 7。オンチェーンファイナンス:ブロックチェーンニュースに焦点を当て、毎日詳細なレポートを更新します。 8。ゴールデンファイナンス:24小

AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

公式gate.ioアプリは、次の方法でダウンロードできます。1。公式Webサイトgate.ioにアクセスしてダウンロードします。 2。AppStoreまたはGoogle Playで「gate.io」を検索してダウンロードします。安全性を確保するには、公式チャンネルからダウンロードしてください。

Javaのプラットフォームの独立性とは、書かれたコードがJVMが変更なしでインストールされた任意のプラットフォームで実行できることを意味します。 1)JavaソースコードはBytecodeにコンパイルされ、2)BytecodeはJVMによって解釈および実行されます、3)JVMは、プログラムが異なるオペレーティングシステムで実行されることを確認するために、メモリ管理とガベージコレクション機能を提供します。

暗号通貨交換に関する10のトップ詐欺 一般的な詐欺:偽の交換、ポンジの資本取引、契約操作、偽のコインフィッシング、顧客サービス詐欺など。 識別ポイント:規制ライセンスを確認し、契約アドレスを確認し、高利回りのコミットメントに注意してください 保護する必要があります: 主流の交換のみを使用します(Binance/Coinbase) ハードウェアウォレットを有効にします 秘密キー/検証コードを共有します 詐欺に対処する:すぐにスクリーンショットを撮り、資産を凍結し、プラットフォームで報告し、警察に報告する コア原則:パスワード/転送のリクエストは詐欺です!

HTML5は5つの重要な改善をもたらします。1。セマンティックタグにより、コードの明確性とSEO効果が向上します。 2.マルチメディアサポートは、ビデオとオーディオの埋め込みを簡素化します。 3。フォームエンハンスメントは、検証を簡素化します。 4.オフラインおよびローカルストレージにより、ユーザーエクスペリエンスが向上します。 5。キャンバスとグラフィック機能は、Webページの視覚化を強化します。

Javaにパラメーターを使用してWeChatアプレットQRコードを生成し、HTMLページに表示することは一般的な要件です。この記事では、Jの使用方法について詳しく説明します。
