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 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
使用Python写个小监控
Jan 27 Python
Python判断两个对象相等的原理
Dec 12 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
python 图片去噪的方法示例
Jul 09 Python
Django ModelForm组件使用方法详解
Jul 23 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
python如何将多个PDF进行合并
Aug 13 Python
python中自带的三个装饰器的实现
Nov 08 Python
python将字符串转变成dict格式的实现
Nov 18 Python
python统计字符串中字母出现次数代码实例
Mar 02 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
js运动应用实例解析
2015/12/28 Javascript
如何编写jquery插件
2017/03/29 jQuery
Vue组件tree实现树形菜单
2017/04/13 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python 图像平移和旋转的实例
2019/01/10 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
实体的生命周期
2013/08/31 面试题
《美丽的彩虹》教学反思
2014/02/25 职场文书
新春联欢会主持词
2014/03/24 职场文书
高一军训决心书
2015/02/05 职场文书
研究生导师推荐信
2015/03/25 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
Python中第三方库Faker的使用详解
2022/04/02 Python