你所在的位置:微信群>互联网推广>正文

微信公众平台开发技术-天气预报应用实例

原创
发布时间: 2023-07-15 13:10:11 热度: 206 作者: 李斯特 来源: 微信加 本文共 2153 字 阅读需要 8 分钟
第9章天气预报应用实例学习目标•了解微信接入框架的概念。•了解阿里云API的调用方法。•熟悉微信应用的开发流程。通过微信公众号,可以实现生活应用类服务。
第9章天气预报应用实例

学习目标

• 了解微信接入框架的概念。

• 了解阿里云 API 的调用方法。

• 熟悉微信应用的开发流程。

通过微信公众号,可以实现生活应用类服务。本章以天气预报为例,系统地介绍生活类应用的开发流程与实现过程。首先在开发者模式下建立微信公众号的开发接入,然后将天气预报数据呈现给用户。天气预报数据呈现的大致过程是,通过访问阿里云 API 市场的免费天气接口获取到天气预报数据,然后将数据进行消息处理,最后在微信公众号上进行显示。

阿里云是提供基础软件、企业软件、网站建设、云安全、数据及 API、解决方案等的各类软件和服务的平台。其中,数据及 API 中有大量可以使用的数据接口,主要包括金融理财、电子商务、人工智能、生活服务、交通地利、气象水利、企业管理、公共事务等大的分类。本章使用的是气象水利中免费的天气预报 API 接口。阿里云通过 API 接口方式提供气象数据服务的官方载体。

微信接入框架

为方便微信公众平台的商家使用,网络上有一些流行的微信接入框架,有付费的,也有免费的,如 Weimob、微嗨(WeiHii)、Senparc 等。这里选用的是 Senparc 微信 SDK,这是一款开源的.NET 的微信接入框架,由苏州盛派网络科技有限公司研发出品,网址是 https://www.wechatadd.com/。

Senparc介绍

Senparc.Weixin SDK 是由盛派网络(Senparc)团队自主研发的针对微信各模块的开发套件(C# SDK),已全面支持微信公众号、微信支付、企业号、开放平台、JS-SDK、摇一摇等模块。

Senparc 的业务主要有微信 SDK、微信开发问题社区、SDK WIKI 和供需平台 4 块内容。其中最主要的是微信 SDK,用户可以在微信 SDK 中下载所有的源代码以及 DEMO。

关键类说明

Senparc 微信框架 SDK 主要是指 Senparc.Weixin.MP,这是该框架的核心。SDK 已经涵盖了微信 6.x 的所有公共 API。例如,Entities/Request*.cs 用于接收微信平台自动发送到服务器的实体(发送过来的是 XML),包括文本、位置、图片 3 类;Entities/Response*.cs 用于反馈给发送人信息实体(最终会转成 XML),包括文本、新闻(图文)两类;Helpers/EntityHelper.cs 用于实体和 XML 之间的转换(由于其中有许多需要特殊处理的字段和类型,因此这里不能简单地用 XML 序列化);Helpers/MsgTypeHelper.cs 用于获取消息类型;CheckSignature.cs 验证请求合法性类;Enums.cs 声明枚举;RequestMessageFactory.cs 用于自动生成不同 Request 类型的实体,并做必要的数据填充。

以下是在开发过程中常用的方法与类。

(1)生成验证字符串:Senparc.Weixin.MP.CheckSignature.GetSignature(string timestamp,string nonce, string token = null),返回根据微信平台提供的数据、SHA1 加密后的验证字符串(注意,token 必须与公众平台的设置一致)。

(2)验证请求:Senparc.Weixin.MP.CheckSignature.Check(string signature, string timestamp,string nonce, string token = null),验证请求是否合法。

(3)获取请求实体:var requestMessage = Senparc.Weixin.MP.RequestMessageFactory.GetRequestEntity(XDocument doc),根据不同请求的类型,自动生成可用于操作的实体(doc 只需要用 XDocument.Parse(xmlString)就能生成),requestMessage.MsgType 就是请求枚举类型。

(4)进行判断及各类操作。

(5)根据需要创建响应类型的实体,如「var responseMessage=ResponseMessageBase.CreateFromRequestMessage(requestMessage, ResponseMsgType.Text)as ResponseMessageText;」,即可返回文本类型信息。

注:v0.6 版本以后,此方法可以简写为如下形式:

var responseMessage = CreateResponseMessage<ResponseMessageText&gt;();

(6)由于目前微信只接收 XML 的返回数据,所以在返回之前还需要做一次转换:XDocument responseDoc = Senparc.Weixin.MP.Helpers.EntityHelper. ConvertEntityToXml(responseMessage); var xmlString = responseDoc.ToString();

(7)至此,整个微信公众号的自动响应过程结束。

版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/9562