实例1:创建简单的HTTP服务器
首先,让我们从创建一个最基础的HTTP服务器开始。这个服务器将能够接收HTTP请求并返回一个简单的“Hello, World!”响应。
from http.server import BaseHTTPRequestHandler, HTTPServer
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
self.wfile.write(b'Hello, World!')
if __name__ == '__main__':
server_address = ('', 8000)
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)
httpd.serve_forever()
在这个例子中,我们创建了一个继承自BaseHTTPRequestHandler的类,并在do_GET方法中处理GET请求,返回一个简单的响应。
实例2:发送HTTP GET请求
现在,让我们使用Python的requests库来发送一个HTTP GET请求。
import requests
response = requests.get('http://example.com')
print(response.status_code)
print(response.text)
在这个例子中,我们向http://example.com发送了一个GET请求,并打印出了响应的状态码和内容。
实例3:使用HTTP POST请求发送数据
接下来,我们将使用POST请求发送数据到服务器。
import requests
data = {'key': 'value'}
response = requests.post('http://httpbin.org/post', data=data)
print(response.status_code)
print(response.json())
在这个例子中,我们向http://httpbin.org/post发送了一个包含数据的POST请求,并打印出了响应的状态码和JSON内容。
实例4:处理HTTP响应头
有时候,我们需要处理HTTP响应头中的信息。
import requests
response = requests.get('http://example.com')
print(response.headers['Content-Type'])
在这个例子中,我们获取了http://example.com的响应头,并打印出了Content-Type值。
实例5:使用HTTP cookies
Cookies是Web应用程序中常用的一种机制,用于存储用户信息。
import requests
session = requests.Session()
session.cookies.set('name', 'value')
response = session.get('http://example.com')
print(response.cookies.get('name'))
在这个例子中,我们使用requests.Session()来存储Cookies,并设置了一个名为name的Cookie。
实例6:使用HTTP认证
有时候,我们需要通过HTTP认证来访问受保护的资源。
import requests
response = requests.get('https://api.github.com/user', auth=('user', 'pass'))
print(response.status_code)
在这个例子中,我们使用用户名和密码进行了HTTP认证。
实例7:处理HTTP错误
在处理HTTP请求时,可能会遇到各种错误。
import requests
try:
response = requests.get('http://example.com')
response.raise_for_status()
except requests.exceptions.HTTPError as err:
print(err)
在这个例子中,我们尝试获取http://example.com的响应,并使用raise_for_status()方法来检查是否有HTTP错误。
实例8:使用HTTP代理
有时候,我们需要通过HTTP代理来访问外部资源。
import requests
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
response = requests.get('http://example.com', proxies=proxies)
print(response.status_code)
在这个例子中,我们使用HTTP代理来访问http://example.com。
实例9:使用HTTP长连接
HTTP长连接允许客户端和服务器在多个请求之间保持连接。
import requests
response = requests.get('http://example.com', stream=True)
for chunk in response.iter_content(chunk_size=8192):
if chunk:
process(chunk)
在这个例子中,我们使用stream=True参数来启用HTTP长连接,并逐块处理响应内容。
实例10:使用HTTP客户端会话
使用requests.Session()可以简化HTTP客户端的使用。
import requests
session = requests.Session()
session.get('http://example.com')
session.post('http://example.com', data={'key': 'value'})
在这个例子中,我们创建了一个HTTP客户端会话,并使用它来发送GET和POST请求。
通过以上10个实用实例,相信你已经对HTTP协议网络编程有了初步的了解。希望这些实例能够帮助你轻松入门,并在实际项目中应用这些知识。
