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

yipeiwu_com5年前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)

相关文章

python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算

python3中的字符串是一种常见的数据类型。 字符串有多种表现形式:单引号、双引号和三引号,且这些字符串的表现形式(单、双、三)都必须是成对出现的。 单、双引号是英文的:‘'和"",三...

以911新闻为例演示Python实现数据可视化的教程

以911新闻为例演示Python实现数据可视化的教程

本文介绍一个将911袭击及后续影响相关新闻文章的主题可视化的项目。我将介绍我的出发点,实现的技术细节和我对一些结果的思考。 简介 近代美国历史上再没有比911袭击影响更深远的事件了,...

Django 实现前端图片压缩功能的方法

思路: <img alt="" src="/img/图片真实地址" ></img> 上面是一个典型的HTML中的图片,在django中,src对应的path...

PyQt5实现从主窗口打开子窗口的方法

PyQt5实现从主窗口打开子窗口的方法

1.在Qt Designer中设计两个简单窗口 2.将.ui文件转换成.py文件 3.新建**.py文件 #-*- coding:utf-8 -*- from PyQt5.QtWi...

python 字典中文key处理,读取,比较方法

python 字典中文key处理,读取,比较方法

昨天碰到的,如果键是中文,如何进行匹配呢,先看文本内容: 这是字典里两个元素的内容,编码是utf-8,中文内容 运行代码如下 # -*- coding: utf-8 -*-...