Python Network Programming 简明教程

Python - Custom HTTP Requests

超文本传输协议 (HTTP) 是一种用于启用客户端和服务器之间通信的协议。它以客户端和服务器之间的请求-响应协议工作。请求设备称为客户端,发送响应的设备称为服务器。

urllib 是 Python 程序中用于处理 http 请求的传统 Python 库。但现在有了 urllib3,它做的比 urllib 还要多。我们导入 urllib3 库,看看 python 如何使用它来进行 http 请求并接收响应。我们可以通过选择请求方法来自定义请求类型。

Pip install urllib3

Example

在以下示例中,我们使用处理 http 请求连接详细信息的 PoolManager() 对象。接下来,我们使用 request() 对象使用 POST 方法发出 http 请求。最后,我们还使用 json 库以 json 格式打印收到的值。

import urllib3
import json

http = urllib3.PoolManager()
r = http.request(
    'POST',
    'http://httpbin.org/post',
    fields={'field': 'value'})
print json.loads(r.data.decode('utf-8'))['form']

当我们运行以上程序时,我们得到以下输出:

{field': value'}

URL Using a Query

我们还可以传递查询参数来构建自定义 URL。在下面的示例中,请求方法使用查询字符串中的值来完成 URL,该 URL 可由 python 程序中的另一个函数进一步使用。

import requests

query = {'q': 'river', 'order': 'popular', 'min_width': '800', 'min_height': '600'}
req = requests.get('https://pixabay.com/en/photos/', params=query)

print(req.url)

当我们运行以上程序时,我们得到以下输出:

https://pixabay.com/en/photos/?q=river&min_width=800&min_height=600&order=popular