python - 从 python 向 web 服务发送 POST 请求

标签 python web-services rest

我正在尝试向 restful 网络服务发送 POST 请求。我需要在请求中传递一些 json。它与下面的 curl 命令一起工作

curl --basic -i --data '<json data string here>' -H Content-type:"text/plain" -X POST http://www.test.com/api

我需要一些帮助来从 Python 发出上述请求。到目前为止,要从 python 发送此 POST 请求,我有以下代码:

import urllib
url='http://www.test.com/api'
params = urllib.urlencode... #What should be here ?
data = urllib.urlopen(url, params).read()

我有以下三个问题:

  1. 这是发送结果的正确方式吗?
  2. 我应该如何指定参数值?
  3. 是否需要指定内容类型?

请帮忙 谢谢你

最佳答案

httplib 的文档有一个 example发送帖子请求。

>>> import httplib, urllib
>>> params = urllib.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'})
>>> headers = {"Content-type": "application/x-www-form-urlencoded",
...            "Accept": "text/plain"}
>>> conn = httplib.HTTPConnection("bugs.python.org")
>>> conn.request("POST", "", params, headers)
>>> response = conn.getresponse()
>>> print response.status, response.reason
302 Found
>>> data = response.read()
>>> data
'Redirecting to <a href="http://bugs.python.org/issue12524">http://bugs.python.org/issue12524</a>'
>>> conn.close()

关于python - 从 python 向 web 服务发送 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122015/

相关文章:

python - 对任意数量的数组的所有可能组合求和并应用限制并返回索引

python - 如何一键选中QTableView行

web-services - Axis2 与 JAX-WS

java - 无法在 java Web 服务中加载文件

java - 如何在两台计算机之间传递大量数据

rest - 如何关闭输入响应的 InputStream(jax.rs)

javascript - ReactJS 简单的登录表单

java - 将参数列表作为正文或 POST 方法的 GET 方法?

python - Bokeh 图接受的颜色格式

python - 将元组和 int 键字典写入文件