如何使用Python的httplib向URL发送包含参数字典的POST请求?

20 投票
2 回答
62018 浏览
提问于 2025-04-15 19:57

我只想要一个函数,它可以接收两个参数:

  • 要发送请求的URL地址
  • 一个包含参数的字典

请问怎么用httplib来实现这个功能?谢谢。

2 个回答

11

这里有一个更简单的方法,只用到了urllib这个库:

import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.example.org/cgi-bin/query", params)
print f.read()

这个内容可以在Python的官方文档中找到,关于urllib模块的例子。

40

来自Python文档的内容:

>>> import httplib, urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> headers = {"Content-type": "application/x-www-form-urlencoded",
...            "Accept": "text/plain"}
>>> conn = httplib.HTTPConnection("musi-cal.mojam.com:80")
>>> conn.request("POST", "/cgi-bin/query", params, headers)
>>> response = conn.getresponse()
>>> print response.status, response.reason
200 OK
>>> data = response.read()
>>> conn.close()

撰写回答