热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

微信公众帐号开发教程第13篇-图文消息全攻略_PHP教程

微信公众帐号开发教程第13篇-图文消息全攻略。引言及内容概要已经有几位读者抱怨柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用,好吧,我错了,原
引言及内容概要

已经有几位读者抱怨“柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用”,好吧,我错了,原本以为把基础API封装完、框架搭建好,再给出一个文本消息的使用示例,大家就能够照猫画虎的,或许是因为我的绘画功底太差,画出的那只猫本来就不像猫吧……

本篇主要介绍微信公众帐号开发中图文消息的使用,以及图文消息的几种表现形式。标题取名为“图文消息全攻略”,这绝对不是标题党,是想借此机会把大家对图文消息相关的问题、疑虑、障碍全部清除掉。

图文消息的主要参数说明

通过微信官方的消息接口指南,可以看到对图文消息的参数介绍,如下图所示:

\

从图中可以了解到:

1)图文消息的个数限制为10,也就是图中ArticleCount的值(图文消息的个数,限制在10条以内);

2)对于多图文消息,第一条图文的图片显示为大图,其他图文的图片显示为小图;

3)第一条图文的图片大小建议为640*320,其他图文的图片大小建议为80*80;

好了,了解这些,再结合第4篇文章所讲的消息及消息处理工具的封装,想要回复图文消息给用户也就不是什么难事了。

图文消息的多种表现形式

下面直接通过代码演示图文消息最主要的五种表现形式的用法,源代码如下:

[java] view plaincopy
  1. package org.liufeng.course.service;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.servlet.http.HttpServletRequest;
  7. import org.liufeng.course.message.resp.Article;
  8. import org.liufeng.course.message.resp.NewsMessage;
  9. import org.liufeng.course.message.resp.TextMessage;
  10. import org.liufeng.course.util.MessageUtil;
  11. /**
  12. * 核心服务类
  13. *
  14. * @author liufeng
  15. * @date 2013-07-25
  16. */
  17. public class CoreService {
  18. /**
  19. * 处理微信发来的请求
  20. *
  21. * @param request
  22. * @return
  23. */
  24. public static String processRequest(HttpServletRequest request) {
  25. String respMessage = null;
  26. try {
  27. // xml请求解析
  28. Map requestMap = MessageUtil.parseXml(request);
  29. // 发送方帐号(open_id)
  30. String fromUserName = requestMap.get("FromUserName");
  31. // 公众帐号
  32. String toUserName = requestMap.get("ToUserName");
  33. // 消息类型
  34. String msgType = requestMap.get("MsgType");
  35. // 默认回复此文本消息
  36. TextMessage textMessage = new TextMessage();
  37. textMessage.setToUserName(fromUserName);
  38. textMessage.setFromUserName(toUserName);
  39. textMessage.setCreateTime(new Date().getTime());
  40. textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
  41. textMessage.setFuncFlag(0);
  42. // 由于href属性值必须用双引号引起,这与字符串本身的双引号冲突,所以要转义
  43. textMessage.setContent("欢迎访问柳峰的博客!");
  44. // 将文本消息对象转换成xml字符串
  45. respMessage = MessageUtil.textMessageToXml(textMessage);
  46. // 文本消息
  47. if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
  48. // 接收用户发送的文本消息内容
  49. String cOntent= requestMap.get("Content");
  50. // 创建图文消息
  51. NewsMessage newsMessage = new NewsMessage();
  52. newsMessage.setToUserName(fromUserName);
  53. newsMessage.setFromUserName(toUserName);
  54. newsMessage.setCreateTime(new Date().getTime());
  55. newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
  56. newsMessage.setFuncFlag(0);
  57. List
    articleList = new ArrayList
    ();
  58. // 单图文消息
  59. if ("1".equals(content)) {
  60. Article article = new Article();
  61. article.setTitle("微信公众帐号开发教程Java版");
  62. article.setDescription("柳峰,80后,微信公众帐号开发经验4个月。为帮助初学者入门,特推出此系列教程,也希望借此机会认识更多同行!");
  63. article.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg");
  64. article.setUrl("http://blog.csdn.net/lyq8479");
  65. articleList.add(article);
  66. // 设置图文消息个数
  67. newsMessage.setArticleCount(articleList.size());
  68. // 设置图文消息包含的图文集合
  69. newsMessage.setArticles(articleList);
  70. // 将图文消息对象转换成xml字符串
  71. respMessage = MessageUtil.newsMessageToXml(newsMessage);
  72. }
  73. // 单图文消息---不含图片
  74. else if ("2".equals(content)) {
  75. Article article = new Article();
  76. article.setTitle("微信公众帐号开发教程Java版");
  77. // 图文消息中可以使用QQ表情、符号表情
  78. article.setDescription("柳峰,80后," + emoji(0x1F6B9)
  79. + ",微信公众帐号开发经验4个月。为帮助初学者入门,特推出此系列连载教程,也希望借此机会认识更多同行!\n\n目前已推出教程共12篇,包括接口配置、消息封装、框架搭建、QQ表情发送、符号表情发送等。\n\n后期还计划推出一些实用功能的开发讲解,例如:天气预报、周边搜索、聊天功能等。");
  80. // 将图片置为空
  81. article.setPicUrl("");
  82. article.setUrl("http://blog.csdn.net/lyq8479");
  83. articleList.add(article);
  84. newsMessage.setArticleCount(articleList.size());
  85. newsMessage.setArticles(articleList);
  86. respMessage = MessageUtil.newsMessageToXml(newsMessage);
  87. var cpro_id = "u6885494";
推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文介绍了在安装或运行 Python 项目时遇到的 'ModuleNotFoundError: No module named setuptools_rust' 错误,并提供了解决方案。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
author-avatar
ZHANGQI0001234
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有