Python中使用httplib发送POST请求的示例代码
发布时间:2023-12-27 09:14:23
在Python中,可以使用httplib库发送HTTP请求。以下是一个示例代码,演示如何使用httplib发送POST请求:
import httplib
def send_post_request(url, body):
# 解析URL,获取主机名和路径
host = url.split("/")[2]
path = "/" + "/".join(url.split("/")[3:])
# 设置请求头和请求体
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
params = urllib.urlencode(body)
# 创建连接
conn = httplib.HTTPConnection(host)
# 发送POST请求
conn.request("POST", path, params, headers)
# 获取响应
response = conn.getresponse()
# 打印响应状态码和响应数据
print "Status:", response.status
print "Response:", response.read()
# 关闭连接
conn.close()
在上面的代码中,send_post_request函数接受一个URL和一个包含请求参数的字典作为参数。该函数首先从URL中提取主机名和路径信息,然后使用urlencode函数将请求参数转化为字符串形式。接下来,通过HTTPConnection创建一个与主机建立连接的实例。然后,使用request方法发送POST请求,其中 个参数是请求方法(这里是"POST"),第二个参数是请求路径,第三个参数是请求体,第四个参数是请求头。最后,使用getresponse方法获取响应,然后打印响应状态码和响应数据。
下面是一个使用该函数发送POST请求的示例:
url = "http://httpbin.org/post"
body = {"name": "John", "age": 30}
send_post_request(url, body)
上述示例中,我们发送了一个POST请求到http://httpbin.org/post,并传递了一个包含"name"和"age"参数的字典作为请求体。在发送请求后,将会得到类似下面的响应:
Status: 200
Response: {
"args": {},
"data": "",
"files": {},
"form": {
"age": "30",
"name": "John"
},
"headers": {
"Accept": "text/plain",
"Content-Length": "16",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "Python-httplib"
},
"json": null,
"url": "http://httpbin.org/post"
}
从响应数据中可以看到,请求体中的参数被成功传递到了服务器,并以JSON格式返回。
