亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不使用任何庫的情況下向服務器發送 HTTP 請求并在 python 中獲得答案

如何在不使用任何庫的情況下向服務器發送 HTTP 請求并在 python 中獲得答案

慕少森 2022-05-11 15:50:09
我剛剛在 Codeacademy 上完成了 Python 課程并閱讀了一本關于網絡的書?,F在我想使用 HTTP 協議向谷歌服務器(或其他地方)發送一條 GET 消息,并僅使用 python 腳本讀取請求。但我不想使用任何東西,但套接字模塊原因是它似乎很容易。只需創建一個 TCP 連接并發送一條消息,然后接收答案。我覺得為這個東西使用一個特殊的庫是一個松散的人,我只需要自己做!import socketservername = 'google.com'serverport = 80clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sentence = 'GET / HTTP/1.1\nHost: google.com\nConnection: close'.format(servername)print(sentence)clientsocket.connect((servername, serverport))clientsocket.send(sentence.encode())new_sentence = clientsocket.recv(1024)print('from server: {}'.format(new_sentence.decode()))clientsocket.close()我嘗試了不同的代碼方法,但據我所知,它應該看起來像這樣,有什么問題?為什么它不起作用?
查看完整描述

2 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

您沒有收到服務器的響應,因為它仍在等待您的數據。在HTTP 協議中,您應該發送\r\n\r\n(CRLF CRLF) 以通知服務器有關請求標頭的結束。


CRLF = '\r\n'

sentence = CRLF.join(['GET / HTTP/1.1', 'Host: ' + servername, 'Connection: close', '', ''])



查看完整回答
反對 回復 2022-05-11
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

import socket


servername = 'google.com'

serverport = 80


clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


sentence = '''GET / HTTP/1.1

Host: {}

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US;q=0.5,en;q=0.3

Connection: close



'''.format(servername)

print(sentence)


clientsocket.connect((servername, serverport))

clientsocket.send(sentence.encode())

new_sentence = clientsocket.recv(1024)

print('from server: {}'.format(new_sentence.decode()))

clientsocket.close()


查看完整回答
反對 回復 2022-05-11
  • 2 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號