微信开发记录:模版消息推送消息显示空白内容

[软件开发] 季雨林 2019/9/22 23:14:52

微信开发虽然已经在工作中经历过几次,但是每次都有点新的花样遇到!如今有个人博客环境,就随笔记录下最近遇到的2件事。


1,微信开发平台的问题:错误、歧义、不足。

错误:模版消息发送,关联小程序部分,文档里的pagepath,实际上是path。

这还是遇到问题之后,从网上搜到网友经历同样错误试错得出的正确结果,在此感谢下那位遇到这个问题,做了分享的那位栽树前人!

歧义:文档里参考的 first.DATA 解释不恰当。

模版消息发送填充数据时候,数据实际上不是DATA,赋值的时候用的是子json对象里的value作为键,实际内容作为值传入

不足:未给出详细解释的错误码,部分参数解析不足

45001错误码,搜遍全网没有找到跟微信相关的解释。

提示的路径参数,实际上并没有说是绝对路径享受路径,相对路径应该不用/开头。


2,模版消息推送消息显示空白内容

遇到这个问题之后,非常奇怪,也是先各种面向搜索引擎编程尝试解决,然而此刻写下这篇随笔的时候还没有找到有效解决方案。网上分享的方案只有这么几个,逐个尝试了都没有得到有效结果。

颜色选择问题:白色文字跟白色背景相同导致的“伪错误”,修改颜色入参或者删除颜色入参可解决,对我显然无效

空格字符问题:有人从官网复制的json样例代码。解释说是将里面的空格去掉就好了,可是我拷贝的代码里并没有找到空格,对我也无效

对象封装问题:官网文档解释说发送模版消息的data需要是string格式,有人传入json字符串不好用,使用对象封装可解决,我试过无效

提交方式问题:有人实际上是没有将data体提交上去,但是我既然把data跟touser作为一个对象提交,显然也不是这类问题

我出问题的原因:(占位待补充,文章发布如果超过一月还是这句括号,希望遇到同样问题的朋友监督我,提醒我)

2019092315点补充:我的问题居然还真是前面的“对象封装问题”,之所以我没有成功取值,在于我第一把的data对象,内部value对象直接用了字符串,这次我修改成功,在于整个data从内到外都不是json格式的string!这显然是微信的反序列化方式问题!兼容度不够友好!

显然微信要求的入参对象得是整个json,而不是部分节点使用string类型的json!

参考代码:

//data体:
public class tempMsg
{
    [DataMember]
    public object first { get; set; }
    [DataMember]
    public object keyword1 { get; set; }
    [DataMember]
    public object keyword2 { get; set; }
    [DataMember]
    public object keyword3 { get; set; }
    [DataMember]
    public object keyword4 { get; set; }
    [DataMember]
    public object Remark { get; set; }
}
//内部消息体:
public class tempMsgContent
{
    [DataMember]
    public string value { get; set; }
    [DataMember]
    public string color { get; set; }
}
//使用过程:
{
    tempMsgContent msg1 = new Service.PassengerService.tempMsgContent() { value = "恭喜你购买成功!1", color = "#173177" };
    tempMsgContent msg2 = new Service.PassengerService.tempMsgContent() { value = "恭喜你购买成功!2", color = "#333" };
    tempMsgContent msg3 = new Service.PassengerService.tempMsgContent() { value = "恭喜你购买成功!3", color = "#333" };
    tempMsgContent msg4 = new Service.PassengerService.tempMsgContent() { value = "恭喜你购买成功!4", color = "#333" };
    tempMsg msg = new Service.PassengerService.tempMsg()
    {
         first = msg1,
         keyword1 = msg2,
         keyword2 = msg3,
         keyword3 = null,
         keyword4 = null,
         Remark = msg4
    };
}



最后,给前来浏览此文的技术同行一个建议:建议大家多多使用博客分享自己的error故事,尤其是包含解决方案的部分!前人栽树,后人乘凉!如果是自建博客,我推荐使用阿里云!本博主关注云架构超过4年,欢迎技术咨询,以及采购咨询(QQ:453177660)。采购可以另有阿里云活动可推荐,协助服务器选型,甚至有一定的安全运维经验分享!


原文地址: https://www.opengps.cn/Blog/View.aspx?id=458 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示