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 相关文章推荐
回调函数的意义以及python实现实例
Jun 20 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 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中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
Javascript中replace()小结
2015/09/30 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
pyside写ui界面入门示例
2014/01/22 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python 安装移动复制第三方库操作
2020/07/13 Python
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
优秀党支部申报材料
2014/12/24 职场文书
天坛导游词
2015/02/02 职场文书
2014年终个人总结报告
2015/03/09 职场文书
详解MySQL的半同步
2021/04/22 MySQL