python tornado微信开发入门代码


Posted in Python onAugust 24, 2018

本文实例为大家分享了python tornado微信开发的具体代码,供大家参考,具体内容如下

#微信入门代码
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

import tornado.ioloop
import tornado.web
import hashlib
import xml.etree.ElementTree as ET
import time

def check_signature(signature, timestamp, nonce):
  # 微信公众平台里输入的token
  token="linden"
  #字典序排序
  list = [token,timestamp,nonce]
  list.sort()
  sha1=hashlib.sha1()
  map(sha1.update,list)
  hashcode=sha1.hexdigest()
  return hashcode == signature

class MainHandler(tornado.web.RequestHandler):
  def get(self):
    signature = self.get_argument('signature')
    timestamp = self.get_argument('timestamp')
    nonce = self.get_argument('nonce')
    echostr = self.get_argument('echostr')
    if check_signature(signature, timestamp, nonce):
      self.write(echostr)
    else:
      self.write('fail')
  def post(self): 
    body = self.request.body
    data = ET.fromstring(body)
    toUser = data.find('ToUserName').text
    fromUser = data.find('FromUserName').text
    createTime = int(time.time())
    msgType = data.find('MsgType').text
    content = data.find('Content').text
    msgId= data.find("MsgId").text
    # from与to在返回的时候要交换
    textTpl = """<xml>
      <ToUserName><![CDATA[%s]]></ToUserName>
      <FromUserName><![CDATA[%s]]></FromUserName>
      <CreateTime>%s</CreateTime>
      <MsgType><![CDATA[%s]]></MsgType>
      <Content><![CDATA[%s]]></Content>
      <MsgId>%s</MsgId>
      </xml>"""
    out = textTpl % (fromUser, toUser, createTime, msgType, content, msgId)
    self.write(out)

application = tornado.web.Application([
  (r"/", MainHandler),
])

if __name__ == "__main__":
  application.listen(80)
  tornado.ioloop.IOLoop.instance().start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
Python Socket传输文件示例
Jan 16 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
python pycurl验证basic和digest认证的方法
May 02 Python
python发送邮件脚本
May 22 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
详解python做UI界面的方法
Feb 27 Python
numpy下的flatten()函数用法详解
May 27 Python
Django 用户认证组件使用详解
Jul 23 Python
Python如何脚本过滤文件中的注释
May 27 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
python使用rpc框架gRPC的方法
Aug 24 #Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 #Python
python中文编码与json中文输出问题详解
Aug 24 #Python
详解Django解决ajax跨域访问问题
Aug 24 #Python
Python面向对象之反射/自省机制实例分析
Aug 24 #Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 #Python
Python日志模块logging基本用法分析
Aug 23 #Python
You might like
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
javascript 获取图片颜色
2009/04/05 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
python实现手机通讯录搜索功能
2018/02/22 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
用python做游戏的细节详解
2019/06/25 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
介绍一下gcc特性
2015/10/31 面试题
公司市场部岗位职责
2013/12/02 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
大学运动会入场词
2014/02/22 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
发票退票证明
2015/06/24 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技