如何用socket發(fā)送http請求,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元達拉特做網(wǎng)站,已為上家服務(wù),為達拉特各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
import socket
url = 'www.zhangdongshengtech.com'
port = 80
# 創(chuàng)建TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 連接服務(wù)端
sock.connect((url, port))
# 創(chuàng)建請求消息頭
request_url = 'GET /article-types/6/ HTTP/1.1\r\nHost: www.zhangdongshengtech.com\r\nConnection: close\r\n\r\n'
print(request_url)
# 發(fā)送請求
sock.send(request_url.encode())
response = b''
# 接收返回的數(shù)據(jù)
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協(xié)議的版本,更早以前是1.0,現(xiàn)在大家都在用1.1
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=/
import socket
url = 'www.zhangdongshengtech.com'
port = 80
# 創(chuàng)建TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 連接服務(wù)端
sock.connect((url, port))
# 創(chuàng)建請求消息頭
request_url = 'GET /article-types/6/ HTTP/1.1\r\nHost: www.zhangdongshengtech.com\r\n\r\n'
print(request_url)
# 發(fā)送請求
sock.send(request_url.encode())
body = ''
# 接收返回的數(shù)據(jù)
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())
關(guān)于如何用socket發(fā)送http請求問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。