什么是HTTP协议?
HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一,它定义了客户端(通常是浏览器)和服务器之间的通信规则。简单来说,HTTP就是网页在浏览器和服务器之间传输数据的方式。了解HTTP协议对于网络编程至关重要。
入门网络编程的30个实用实例
实例1:发送HTTP请求
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/")
response = conn.getresponse()
print(response.read())
conn.close()
实例2:解析HTTP响应
import http.client
import json
conn = http.client.HTTPConnection("api.example.com")
conn.request("GET", "/data")
response = conn.getresponse()
data = json.loads(response.read())
conn.close()
print(data)
实例3:使用HTTPS协议
import http.client
import ssl
context = ssl.create_default_context()
conn = http.client.HTTPSConnection("www.example.com", context=context)
conn.request("GET", "/")
response = conn.getresponse()
print(response.read())
conn.close()
实例4:自定义HTTP头部
import http.client
conn = http.client.HTTPConnection("www.example.com")
headers = {
"User-Agent": "My Custom Agent",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
}
conn.request("GET", "/", headers=headers)
response = conn.getresponse()
print(response.read())
conn.close()
实例5:发送POST请求
import http.client
import json
conn = http.client.HTTPConnection("api.example.com")
headers = {
"Content-Type": "application/json"
}
conn.request("POST", "/data", body=json.dumps({"key": "value"}), headers=headers)
response = conn.getresponse()
print(response.read())
conn.close()
实例6:处理重定向
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/")
response = conn.getresponse()
if response.status == 301:
print("Redirecting to:", response.headers['Location'])
conn.request("GET", response.headers['Location'])
response = conn.getresponse()
print(response.read())
conn.close()
实例7:处理404错误
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/nonexistentpage")
response = conn.getresponse()
if response.status == 404:
print("Page not found")
else:
print(response.read())
conn.close()
实例8:使用代理服务器
import http.client
conn = http.client.HTTPConnection("www.example.com", proxy="http://myproxy:port")
conn.request("GET", "/")
response = conn.getresponse()
print(response.read())
conn.close()
实例9:使用HTTP基本认证
import http.client
from base64 import b64encode
conn = http.client.HTTPConnection("api.example.com")
headers = {
"Authorization": "Basic " + b64encode("username:password".encode()).decode()
}
conn.request("GET", "/data", headers=headers)
response = conn.getresponse()
print(response.read())
conn.close()
实例10:使用HTTP摘要认证
import http.client
import hashlib
import hmac
def generate_digest_auth(username, password, realm, uri):
ha1 = hmac.new(username.encode() + ":".encode() + realm.encode() + ":".encode() + uri.encode(), password.encode(), hashlib.md5).hexdigest()
return "Digest " + " ".join([
"username=" + username,
"realm=" + realm,
"nonce=" + "some_nonce",
"uri=" + uri,
"response=" + ha1
])
conn = http.client.HTTPConnection("api.example.com")
headers = {
"Authorization": generate_digest_auth("username", "password", "realm", "/data")
}
conn.request("GET", "/data", headers=headers)
response = conn.getresponse()
print(response.read())
conn.close()
实例11:处理HTTP压缩
import http.client
import zlib
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/compressed", headers={"Accept-Encoding": "gzip, deflate"})
response = conn.getresponse()
if response.headers.get("Content-Encoding") == "gzip":
data = zlib.decompress(response.read())
else:
data = response.read()
print(data)
conn.close()
实例12:使用HTTP cookies
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/set_cookie")
response = conn.getresponse()
cookie = response.headers.get("Set-Cookie")
conn.request("GET", "/use_cookie", headers={"Cookie": cookie})
response = conn.getresponse()
print(response.read())
conn.close()
实例13:使用HTTP缓存
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/cache")
response = conn.getresponse()
print(response.read())
conn.request("GET", "/cache")
response = conn.getresponse()
print(response.read())
conn.close()
实例14:使用HTTP POST表单数据
import http.client
import urllib.parse
conn = http.client.HTTPConnection("api.example.com")
data = urllib.parse.urlencode({"key": "value"})
conn.request("POST", "/data", body=data)
response = conn.getresponse()
print(response.read())
conn.close()
实例15:使用HTTP PUT请求
import http.client
import json
conn = http.client.HTTPConnection("api.example.com")
data = json.dumps({"key": "value"})
conn.request("PUT", "/data", body=data)
response = conn.getresponse()
print(response.read())
conn.close()
实例16:使用HTTP DELETE请求
import http.client
conn = http.client.HTTPConnection("api.example.com")
conn.request("DELETE", "/data")
response = conn.getresponse()
print(response.read())
conn.close()
实例17:使用HTTP OPTIONS请求
import http.client
conn = http.client.HTTPConnection("api.example.com")
conn.request("OPTIONS", "/data")
response = conn.getresponse()
print(response.read())
conn.close()
实例18:使用HTTP TRACE请求
import http.client
conn = http.client.HTTPConnection("api.example.com")
conn.request("TRACE", "/data")
response = conn.getresponse()
print(response.read())
conn.close()
实例19:使用HTTP CONNECT请求
import http.client
import ssl
context = ssl.create_default_context()
conn = http.client.HTTPConnection("api.example.com", context=context)
conn.request("CONNECT", "www.example.com:443")
response = conn.getresponse()
if response.status == 200:
print("Connected to proxy")
conn.close()
实例20:使用HTTP HEAD请求
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("HEAD", "/")
response = conn.getresponse()
print(response.read())
conn.close()
实例21:使用HTTP GET请求获取图片
import http.client
import io
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/image.png")
response = conn.getresponse()
img = io.BytesIO(response.read())
conn.close()
img.seek(0)
# 显示图片
实例22:使用HTTP GET请求获取视频
import http.client
import io
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/video.mp4")
response = conn.getresponse()
vid = io.BytesIO(response.read())
conn.close()
vid.seek(0)
# 播放视频
实例23:使用HTTP GET请求获取音频
import http.client
import io
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/audio.mp3")
response = conn.getresponse()
aud = io.BytesIO(response.read())
conn.close()
aud.seek(0)
# 播放音频
实例24:使用HTTP GET请求获取文本
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/text.txt")
response = conn.getresponse()
print(response.read())
conn.close()
实例25:使用HTTP GET请求获取JSON数据
import http.client
import json
conn = http.client.HTTPConnection("api.example.com")
conn.request("GET", "/data")
response = conn.getresponse()
data = json.loads(response.read())
conn.close()
print(data)
实例26:使用HTTP GET请求获取XML数据
import http.client
conn = http.client.HTTPConnection("api.example.com")
conn.request("GET", "/data.xml")
response = conn.getresponse()
xml = response.read()
conn.close()
# 解析XML数据
实例27:使用HTTP GET请求获取CSV数据
import http.client
conn = http.client.HTTPConnection("api.example.com")
conn.request("GET", "/data.csv")
response = conn.getresponse()
csv = response.read()
conn.close()
# 解析CSV数据
实例28:使用HTTP GET请求获取PDF数据
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/document.pdf")
response = conn.getresponse()
pdf = response.read()
conn.close()
# 显示PDF文档
实例29:使用HTTP GET请求获取Word文档
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/document.docx")
response = conn.getresponse()
docx = response.read()
conn.close()
# 显示Word文档
实例30:使用HTTP GET请求获取Excel文档
import http.client
conn = http.client.HTTPConnection("www.example.com")
conn.request("GET", "/document.xlsx")
response = conn.getresponse()
xlsx = response.read()
conn.close()
# 显示Excel文档
通过以上30个实用实例,相信你已经对HTTP协议和网络编程有了更深入的了解。在学习和实践过程中,不断尝试和探索,你会逐渐掌握网络编程的技巧,玩转网络世界!
