在Python的Bottle框架中使用微信API的示例

yipeiwu_com6年前Python基础

微信这个东西估计宅男没几个不熟悉的吧,微信经过这么两年多的发展终于向开放平台跨出了友好的一步。蛋疼的以为微信会出一个详细的api等接口,兴奋不已的去申请了微信公共平台,然后开始找各种api的位置……

花费了近一个小时,依然没找到……

最后动用Google大杀器,终于找到了这么个链接。我了个去的,没比这还简单的api文档了吧。

最让人无法理解的是:居然没有本地开发环境支持,每次都要放在生产环境去调试。

最让人欣慰的是:就那么俩方法,生产环境调试几次也就完事了。

Python(bottle)版代码如下:

# -*- coding:utf-8 -*-

from bottle import debug, default_app, run, get, request, post

import sys, os, time, libxml2dom

@get('/')

def index():

  return request.GET.get('echostr')

@post('/')

def index_post():

  for key, value in request.POST.allitems():

    doc = libxml2dom.parseString(key)

    _to = doc.xpath('//FromUserName')[0].textContent

    _from = doc.xpath('//ToUserName')[0].textContent

    #_content = doc.xpath('//Content')[0].textContent

  return """<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[text]]></MsgType>

<Content><![CDATA[%s]]></Content>

<FuncFlag>0</FuncFlag>

</xml>"""%(_to, _from, int(time.time()), u'我了个去啊')

if __name__ == "__main__":

  # Interactive mode

  debug(True)

  port = int(sys.argv[1] if len(sys.argv) > 1 else 8888)

  run(host='0.0.0.0', port=port, reloader=True)

else:

  # Mod WSGI launch

  os.chdir(os.path.dirname(__file__))

  app = default_app()

演示直接看图:

2015423155218630.jpg (258×258)

相关文章

Python中的__slots__示例详解

前言 相信Python老鸟都应该看过那篇非常有吸引力的Saving 9 GB of RAM with Python's slots 文章,作者使用了__slots__让内存占用从25.5...

Python散点图与折线图绘制过程解析

Python散点图与折线图绘制过程解析

这篇文章主要介绍了Python散点图与折线图绘制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在数据分析的过程中,经常需要将...

python获取指定字符串中重复模式最高的字符串方法

给定一个字符串,如何得到其中重复模式最高的子字符串,我采用的方法是使用滑窗机制,对给定的字符串切分,窗口的大小从1增加到字符串长度减1,将所有的得到的切片统计结果,在这里不考虑单个字符的...

Python中用PIL库批量给图片加上序号的教程

Python中用PIL库批量给图片加上序号的教程

女友让我给她论文的图片上加上字母序号,本来觉得是个很简单的事情,但那个白底黑字的圆圈序号却难住了我, 试了几个常用的软件,都不行。 后来用 PS + 动作,倒是能搞出来,不过也不容易,正...

详解pandas的外部数据导入与常用方法

外部数据导入 导入excel文件 pandas导入excel用read_excel()方法: import pandas as pd excel_file1 = pd.read_...