如何使用Python的httplib将POST发送到URL,并带有参数字典?

TIM*_*MEX 20 python api post httplib

我只想要一个可以带2个参数的函数:

  • POST到的URL
  • 参数字典

如何用httplib完成?谢谢.

TIM*_*MEX 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()
Run Code Online (Sandbox Code Playgroud)

  • 信用到期的信用:这是直接从http://docs.python.org/release/2.6/library/httplib.html(或2.5.2或更早版本,多年来没有太大变化)中扯下来的 (29认同)

Bel*_*eli 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()
Run Code Online (Sandbox Code Playgroud)

urllib模块的 Python文档中找到

  • 抱歉,这很可能是HTTP GET,而不是POST (5认同)
  • @hko不,它来自该urllib页面上的POST示例.请注意,params添加了`,params`而不是`%params`. (4认同)