• 发送消息


    用户给联系人发送消息

    1、找到发送消息的url:

        https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg
    

    很奇怪完成的时候url后面还有参数,现在记录的 时候就没有找到了

    2、这个是post请求,还有请求参数:

    上面的字段等于:
    DeviceID = 随机的时间戳
    Sid = 前面登陆票据ticket,TICKET_DATA_DICT["wxsid"]
    Skey = 前面登陆成功票据ticket,TICKET_DATA_DICT["skey"]
    Uin = 前面登陆成功票据ticket,TICKET_DATA_DICT["wxuin"]
    
    ClientMsgId = 随机的时间戳
    Content = 发送的内容
    FromUserName = 谁发的id,用户信息的UserName字段值
    LocalID = 随机时间戳
    ToUserName = 发给谁,联系人的UserName字段值
    Type: 1 固定值
    Scene: 0 固定值
    

    3、后台片段代码如下:

    def send_message(request):
        """
        发送消息
        :param request:
        :return:
        """
        to_user_id = request.POST.get("user_id")
        send_msg = request.POST.get("user_msg")
        from_user_id=USER_INIT_DATA["User"]["UserName"]
        send_message_url = "https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?lang=zh_CN&pass_ticket={0}"
        send_message_url = send_message_url.format(TICKET_DATA_DICT["pass_ticket"])
        payload_data = copy.deepcopy(PAYLOAD_DATA)
        payload_data["Msg"]={
            "ClientMsgId":int(time.time()),
            "Content":"%(content)s",
            "FromUserName":from_user_id,
            "LocalID":int(time.time()),
            "ToUserName":to_user_id,
            "Type":1,
        }
        payload_data["Scene"]=int(time.time())
        #字符串
        payload_data = json.dumps(payload_data)
        #进行格式化
        payload_data = payload_data %{"content":send_msg}
        #转换成字节
        payload_data_bytes = bytes(payload_data,encoding="utf-8")
        cookie_all = {}
        # 因为不知道用哪个cookie所以上面两个都给加上了
        cookie_all.update(LOGIN_COOKIE_DICT)
        cookie_all.update(TICKET_COOKIE_DICT)
        headers ={"Content-Type":"application/json"}
        reponse_message = requests.post(url=send_message_url,data=payload_data_bytes,headers=headers,cookies=cookie_all)
        return HttpResponse("ok")
    
    

    4、当发送的消息为中文时会乱码,原因是当请求数据是json格式的时候,requests模块会把数据转换成字节,那么传给微信的值就是字节;解决方法是:

    4、1先把数据变成字节类型

    4、2加上headers ={"Content-Type":"application/json"},方法如下:

        #字符串
        payload_data = json.dumps(payload_data)
        #进行格式化
        payload_data = payload_data %{"content":send_msg}
        #转换成字节
        payload_data_bytes = bytes(payload_data,encoding="utf-8")
        headers ={"Content-Type":"application/json"}
        reponse_message = requests.post(url=send_message_url,data=payload_data_bytes,headers=headers,cookies=cookie_all)
    

    5、前端用户点击按钮发送消息

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>用户联系人</title>
    </head>
    <body>
        <div>
            <p><input id="user_id" type="text" placeholder="发送的用户"/></p>
            <p><input id="user_msg" placeholder="发送的消息"/></p>
            <input id="sendmsg" type="button" value="提交">
        </div>
        <ul>
            {% for row in data.MemberList%}
            <li>{{row.NickName}}_{{row.UserName}}_{{row.Province}}</li>
            {%endfor%}
        </ul>
        <script src="/static/js/jquery.min.js"></script>
        <script>
        //页面加载完实现
            $(function () {
                //发送消息
                sendmessage();
            });
            //发送消息
            function sendmessage() {
                $("#sendmsg").click(function () {
                    $.ajax({
                        url:"/sendmessage/",
                        type:"POST",
                        data:{"user_id":$("#user_id").val(),"user_msg":$("#user_msg").val()},
                        success:function () {
                            
                        }
                    })
                    
                })
            }
          
        </script>
    </body>
    </html>
    
  • 相关阅读:
    。。。剑指Offer之——二叉树的镜像。。。
    。。。剑指Offer之——树的子结构。。。
    。。。剑指Offer之——合并两个排序的链表。。。
    。。。剑指Offer之——反转链表。。。
    。。。剑指Offer之——链表中倒数第k个结点。。。
    。。。剑指Offer之——调整数组顺序使奇数位于偶数前面。。。
    。。。剑指Offer之——数值的整数次方。。。
    。。。剑指Offer之——二进制中1的个数。。。
    。。。剑指Offer之——跳台阶。。。
    。。。剑指Offer之——斐波那契数列。。。
  • 原文地址:https://www.cnblogs.com/venvive/p/11575406.html
Copyright © 2020-2023  润新知