将数据以POST消息发送到RESTful web服务
我需要通过POST消息向一个RESTful网络服务发送一些JSON数据。
我应该使用哪个Python模块来实现这个呢?有没有一些示例代码可以参考一下?
3 个回答
0
这是我用来发送和接收请求的代码
import httplib
connection = httplib.HTTPConnection('192.168.38.38:6543')
body_content = 'abcd123456xyz'
connection.request('POST', '/foo/bar/baa.html', body_content)
postResult = connection.getresponse()
connection.request('GET', '/foo/bar/baa.html')
response = connection.getresponse()
getResult = response.read()
它的功能和下面这串命令行指令是一样的:
curl -X POST -d "abcd123456xyz" 192.168.38.38:6543/foo/bar/baa.html
curl 192.168.38.38:6543/foo/bar/baa.html
0
Requests库可能是完成这项工作的最佳选择。它绝对比urllib和urllib2要好。你可以在http://pypi.python.org/pypi/requests上获取它并查看示例,或者你也可以直接用“pip install requests”来安装它。
在https://github.com/issackelly/Consuming-Web-APIs-with-Python-Talk上,还有一些使用Github API的例子,展示了requests库和其他库的用法。
3
你遇到哪个部分的问题呢?是JSON,还是POST?
关于JSON,从Python 2.5版本开始就已经有了一个叫json
的模块。你只需要用json.dumps(my_data)
这个命令,就可以把一个数据变量转换成JSON格式。
至于POST,标准库里有很多模块可以用,但最推荐的还是安装一个第三方的requests库。