欢迎访问宙启技术站
智能推送

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格式返回。