将数据以POST消息发送到RESTful web服务

1 投票
3 回答
1908 浏览
提问于 2025-04-16 23:54

我需要通过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库。

撰写回答