"""
http请求(请求行和空行是必须要有的,请求体和请求头可以没有)
请求格式:请求行,请求头,空行,请求体
1.请求行:具体请求类别和请求内容
GET / HTTP/1.1
请求类别 请求内容 协议版本
请求类别表示要做不同的事
GET:获取网络资源
POST:提交一定的信息,得到反馈
HEAD:只获取网络资源的响应头
PUT:更新服务器资源
DELETE:删除服务器资源
CONNECT:
TRACE:测试
OPTIONS:获取服务器性能信息
2.请求头:对请求的进一步解释和描述(键值对表示,每个键值对表示一个描述,也表示一行)
Accept-Encoding:gzip 请求获取一个编码是gzip
3.空行
4.请求体:请求的参数或者提交内容
"""
from socket import *
soc = socket(AF_INET, SOCK_STREAM)
soc.bind(('127.0.0.1', 8080))
soc.listen(2)
csoc, addr = soc.accept()
print("connect from", addr)
buffer_byte = csoc.recv(1024)
print(buffer_byte.decode())
csoc.close()
soc.close()
"""=============================================================="""
"""
http(response)响应
响应格式:响应行,响应头,空行,响应体
1.响应行:反馈最基本的情况
HTTP/1.1 200 OK
版本信息 响应码 附加信息
响应码:
1xx 提示信息。表示请求被接收
2xx 响应成功
3xx 响应需要进一步操作,重定向
4xx 客户端错误
5xx 服务器错误
2.响应头:对响应信息的描述(数据是什么格式,那个服务器给你的,什么时候给你的)
Content-Type:text/html
3.空行
4.响应体:响应的主题内容信息
"""
import socket
# 创建tcp套接字
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 服务器地址
server_addr = ('127.0.0.1', 9091)
# 绑定服务器地址
soc.bind(server_addr)
# 开启监听
soc.listen(5)
# 等待连接
client, caddr = soc.accept()
# 接收客户端请求信息
buffer_byte = client.recv(1024)
# 打印收到的信息
print(buffer_byte)
# 响应的内容
response = """HTTP/1.1 200 OK
Content-Type:text/html
Hello World
"""
# 给客户端发送响应的内容
num = client.send(response.encode())
# 关闭套接字
soc.close()
client.close()
python http的请求和响应
最新推荐文章于 2024-07-12 17:22:15 发布