python 解析http post传递的数据(FieldStorage类 如何 解析http body中json数据)
2015-04-09 14:32
946 查看
当使用python接收http post请求时,可以使用FieldStorage类。post最常用的就是表单数据了,这里举个例子来说明如何使用,为了简便,表单使用文本框input。看看这样的表单:
那在接收post请求时,我们这样来获取数据:
当然了,实际情况下,我们是不知道,表单到底有多是字段的,其实form = cgi.FieldStorage()后form就类似python中的dict,通过key来获取value,我们使用循环就行:
当然了,表单不止文本框,还有很多,python有FieldStorage有比较详细的文档,这里不多说了。
还有一种很常见的情况,就是post的数据是放在body中,并且是json格式的,这种该怎么获取呢?
当然还是可以用FieldStorage类来,只是这时候通过form.headers['content-type']可以知道,数据是json的。可以这样来取到实际数据:
假如http body中的json是这样的:
虽然在很多脚本语言中,字符串也可以用单引号表示,但是在标准json中,全部使用双引号,用反斜杠来转义。
可以先通过form.value取到原始数据,通过json.loads()函数将原始数据转成json数据,由于使用的python程序,我们继续将json字符串转成pythpn内置的字典类型。
这里要说下,form.value获取的是json的string类型,进过json.loads()后的类型对应的是python 的unicode类型。
虽然python文档中关于FieldStorage类的说明还是比较详细,但是都是基于表单的,要是传递的数据时json格式的,希望上面的说明能给有需要的同学提供下帮助。
<input type="text" name="user_name" value="wu"/></br></br> <input type="text" name="user_id" value="123"/></br></br>
<span style="font-family: Arial, Helvetica, sans-serif;"><input type="submit" value="提交"/></span>
那在接收post请求时,我们这样来获取数据:
import cgi form = cgi.FieldStorage() '''获取表单中数据''' user_name = form['user_name'].value user_id = form['user_id'].value
当然了,实际情况下,我们是不知道,表单到底有多是字段的,其实form = cgi.FieldStorage()后form就类似python中的dict,通过key来获取value,我们使用循环就行:
import cgi form = cgi.FieldStorage() '''获取表单中所有数据''' for key in form.keys(): value = form[key].value
当然了,表单不止文本框,还有很多,python有FieldStorage有比较详细的文档,这里不多说了。
还有一种很常见的情况,就是post的数据是放在body中,并且是json格式的,这种该怎么获取呢?
当然还是可以用FieldStorage类来,只是这时候通过form.headers['content-type']可以知道,数据是json的。可以这样来取到实际数据:
import cgi import json from json import * form = cgi.FieldStorage() '''通过form.value可以直接获取post的json字符串, 继续使用json.loads()函数将json字符串转换成python unicode对象 JSONDecoder().decode()可以将json字符串转换成python 的dict类型 ''' json_str = json.loads(form.value) json_dict = JSONDecoder().decode(json_str)
for (key, value) in json_dict.items(): //TODO
假如http body中的json是这样的:
"{\"data\":{\"orderId\":\"abcf1330\",\"gameId\":123,\"serverId\":654,\"ucid\":123456,\"payWay\":1,\"amount\":\"100.00\",\"callbackInfo\":\"custominfo=xxxxx#user=xxxx\",\"orderStatus\":\"S\",\"failedDesc\":\"\",\"cpOrderId\":\"1234567\"},\"sign\":\"1f96be69a821405d7357847f30bcda81\"}
虽然在很多脚本语言中,字符串也可以用单引号表示,但是在标准json中,全部使用双引号,用反斜杠来转义。
可以先通过form.value取到原始数据,通过json.loads()函数将原始数据转成json数据,由于使用的python程序,我们继续将json字符串转成pythpn内置的字典类型。
这里要说下,form.value获取的是json的string类型,进过json.loads()后的类型对应的是python 的unicode类型。
虽然python文档中关于FieldStorage类的说明还是比较详细,但是都是基于表单的,要是传递的数据时json格式的,希望上面的说明能给有需要的同学提供下帮助。
相关文章推荐
- httpClient post步骤 解析json数据(向服务器传递,接受服务器传递))
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- [Android]HttpPost之post请求传递Json数据
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- python--如何解析json数据结构
- 如何处理post请求方JSON数据传递的问题
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- HttpPost 传输Json数据并解析
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- MVC中前台如何向后台传递数据------$.get(),$post(),$ajax(),$.getJSON()总结
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- python http请求post参数,json解析
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- PHP如何通过Http Post请求发送Json对象数据?
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- 关于java 发送http json数据格式请求时,服务器端如何接收json数据并解析