如何用socket发送http请求
如何用socket发送http请求,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都创新互联2013年至今,是专业互联网技术服务公司,拥有项目成都网站建设、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元达拉特做网站,已为上家服务,为达拉特各地企业和个人服务,联系电话:028-86922220
1. 用socket发送http请求
import socket
url = 'www.zhangdongshengtech.com'
port = 80
# 创建TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
sock.connect((url, port))
# 创建请求消息头
request_url = 'GET /article-types/6/ HTTP/1.1\r\nHost: www.zhangdongshengtech.com\r\nConnection: close\r\n\r\n'
print(request_url)
# 发送请求
sock.send(request_url.encode())
response = b''
# 接收返回的数据
rec = sock.recv(1024)
while rec:
response += rec
rec = sock.recv(1024)
print(response.decode())
GET /article-types/6/ HTTP/1.1
Host: www.zhangdongshengtech.com
Connection: close
GET 指明本次请求所使用的method,这是一次GET请求
/article-types/6/ 指明了要请求的资源地址
HTTP/1.1 指明http协议的版本,更早以前是1.0,现在大家都在用1.1
2. 返回的消息体
HTTP/1.1 200 OK
Server: openresty/1.11.2.1
Date: Sun, 05 May 2019 03:11:05 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 29492
Connection: close
Set-Cookie: session=eyJjc3JmX3Rva2VuIjp7IiBiIjoiTn
prd1pqZGhaamd6T1dObFlUQTRZVFJqTkRJeU9USmtNalU0TldOaU1UQXdNamsxTkdSaVpRPT0ifX0.D6_lyQ.
4EqkK8taszUkPtMsol-8pzF_LQM; HttpOnly; Path=/
3. 从消息头解析出content_length
import socket
url = 'www.zhangdongshengtech.com'
port = 80
# 创建TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
sock.connect((url, port))
# 创建请求消息头
request_url = 'GET /article-types/6/ HTTP/1.1\r\nHost: www.zhangdongshengtech.com\r\n\r\n'
print(request_url)
# 发送请求
sock.send(request_url.encode())
body = ''
# 接收返回的数据
rec = sock.recv(1024)
index = rec.find(b'\r\n\r\n') # 找到消息头与消息体分割的地方
head = rec[:index]
body = rec[index+4:]
# 获取Content-Length
headers = head.split(b'\r\n')
for header in headers:
if header.startswith(b'Content-Length'):
content_length = int(header.split(b' ')[1])
length = len(body)
while length < content_length:
rec = sock.recv(1024)
length += len(rec)
body += rec
sock.close()
print(length)
print(head.decode())
print(body.decode())
关于如何用socket发送http请求问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
本文标题:如何用socket发送http请求
文章地址:http://azwzsj.com/article/iihojs.html