微信推送消息遇到的坑 – 返回error code 40008,并且发送不成功[通俗易懂]

微信推送消息遇到的坑 – 返回error code 40008,并且发送不成功[通俗易懂]api文档就是这里啦。https://work.weixin.qq.com/api/doc#90000/90135/90236/%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF我感觉腾讯并没有把这个errorcode做得很细,反之,非常笼统,让你看到这个err不知所措不晓得到底啥问题。我这边要用微信接收系统发出来的alert,比如哪个服务器cpu负荷…

大家好,又见面了,我是你们的朋友全栈君。

api 文档就是这里啦。

https://work.weixin.qq.com/api/doc#90000/90135/90236/%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF

 

我感觉腾讯并没有把这个error code做得很细,反之,非常笼统,让你看到这个err不知所措不晓得到底啥问题。

我这边要用微信接收系统发出来的alert,比如哪个服务器cpu负荷高,io高,啥的。。对吧。很自然,看到腾讯的大神们提供的例子如下,很明显怎么使用,这都不用说。

query_string = 
{
   "touser" : "UserID1|UserID2|UserID3",
   "toparty" : "PartyID1|PartyID2",
   "totag" : "TagID1 | TagID2",
   "msgtype" : "text",
   "agentid" : 1,
   "text" : {
       "content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
   },
   "safe":0,
   "enable_id_trans": 0,
   "enable_duplicate_check": 0,
}

但是这个json对象,直接用python的requset发送过去,不管我怎么改,它就是不对,永远40008。。

然后我用postman调试,生成例子代码,发现在发送之前,这个json对象被转义成纯文本了。。。

所以我这边在发送之前,对它做个json.dump()的操作就可以了:

def sendWechatAlertMsg(alert):
    token = getWechatToken()
    url = getWechatAPIURL()

    querystring = {'access_token': token}
    payload = {
        "touser": "somebody",
        "msgtype": "text",
        "agentid": "123456789",
        "text": {
            "content": "You jump, I jump, we all jump, you all family jump!!!",
        },
        "safe": 0,
        "enable_id_trans": 0,
        "enable_duplicate_check": 0,
    }
    headers = {
        'cache-control': 'no-cache'
    }


    # 这里加一个   json.dumps()就可以了。
    response = requests.request(
        'POST', url, data=json.dumps(payload), headers=headers, params=querystring)
    
    if response.json().get('errcode') > 0:
        logger.error('failed send to wechat, err msg: ' +
                     response.json().get('errmsg'))
        return False
    else:
        logger.error('successfully sent to weChat')
        return True

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132689.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • struts2 拦截器和过滤器理解

    struts2 拦截器和过滤器理解学习Struts2时,发现有过滤器和拦截器,他们貌似都是一样的功能,但是为什么会有2个不同的名称呢?肯定是有区别的,所以打算自己整理一下。          过滤器,是在javaweb中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do

    2022年10月6日
    2
  • Spark存储体系底层架构剖析-Spark商业环境实战

    Spark存储体系底层架构剖析-Spark商业环境实战

    2021年6月15日
    123
  • 快速排序的4种优化[通俗易懂]

    快排思想快排基准的选择固定基准随机基准三数取中快速排序的优化优化1:序列长度达到一定大小时,使用插入排序优化2:尾递归优化优化3:聚集元素优化4:多线程处理快排快排思想快排算法是基于分治策略的排序算法,其基本思想是,对于输入的数组a[low,high],按以下三个步骤进行排序。(1)分解:以a[…

    2022年4月14日
    153
  • html5 scrollheight,JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记…[通俗易懂]

    html5 scrollheight,JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记…[通俗易懂]全文参考:https://github.com/iuap-design/blog/issues/38、MDNclientHeight,只读clientHeight可以用公式CSSheight+CSSpadding-水平滚动条的高度(如果存在)来计算。如图,这样一个div,它的clientHeight为95,计算:50(height)+30(padding-top)+30(pad…

    2022年7月23日
    11
  • 徐州优译翻译宗旨:凭借优异的翻译质量,做最专业的外贸助手!

    徐州优译翻译宗旨:凭借优异的翻译质量,做最专业的外贸助手!

    2021年7月23日
    94
  • ctpn详解

    ctpn详解一.概述对于复杂场景的文字识别,首先要定位文字的位置,即文字检测。这一直是一个研究热点。文本检测可以看成特殊的目标检测,但它有别于通用目标检测.在通用目标检测中,每个目标都有定义好的边界框,检测出的bbox与当前目标的groundtruth重叠率大于0.5就表示该检测结果正确.文本检测中正确检出需要覆盖整个文本长度,且评判的标准不同于通用目标检测,具体的评判方法参见(ICDAR2017…

    2025年8月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号