我刚刚在 Codeacademy 上完成了 Python 类(class)并阅读了一本关于网络的书。现在我想使用 HTTP 协议(protocol)向谷歌服务器(或其他地方)发送一条 GET 消息,并仅使用 python 脚本读取请求。但我不想使用任何东西,但套接字模块
原因是它似乎很容易。只需创建一个 TCP 连接并发送一条消息,然后接收答案。我觉得为这个东西使用一个特殊的库是一个松散的人,我只需要自己做!
import socket
servername = 'google.com'
serverport = 80
clientsocket = 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()
我尝试了不同的代码方法,但据我所知,它应该看起来像这样,有什么问题?为什么它不起作用?
最佳答案
您没有收到服务器的响应,因为它仍在等待您的数据。在 HTTP protocol你应该发送\r\n\r\n
(CRLF CRLF) 通知服务器请求头结束。
CRLF = '\r\n'
sentence = CRLF.join(['GET / HTTP/1.1', 'Host: ' + servername, 'Connection: close', '', ''])
关于python - 如何在不使用任何库的情况下向服务器发送 HTTP 请求并在 python 中获得答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57645744/