一个能处理json的FieldStorage
一般的,FieldStorage是不能处理Json请求的,这里可以改写它的一个方法,使其具备接收json请求的能力。
#!/usr/bin/env python
#encoding:utf-8
import cgi
import urlparse
import json
import os
class JSONFieldStorage(cgi.FieldStorage, object):
"""
FieldStorage类的改写,使其具有接收json的能力
"""
def read_urlencoded(self):
"""Internal: read data in query string format."""
qs = self.fp.read(self.length)
try:
self._json = json.loads(qs)
except Exception, e:
self._json = None
if self._json == None:
try:
self._json = json.loads(self.qs_on_post)
except:
self._json = None
if self.qs_on_post:
qs += '&' + self.qs_on_post
self.list = list = []
for key, value in urlparse.parse_qsl(qs, self.keep_blank_values,
self.strict_parsing):
list.append(cgi.MiniFieldStorage(key, value))
self.skip_lines()
def getJson(self):
try:
return self._json
except:
return None
使用方法和FieldStorage一致,要得到json请求时只需要调用getJson即可。