![](/img/trans.png)
[英]Why am I getting socket.gaierror: [Errno -2] from Python HTTPLib
[英]Why am I getting socket.gaierror?
我正在嘗試訪問和顯示來自http://data.pr4e.org/romeo.txt的數據。 這是我的代碼:
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\n\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if (len(data) < 1):
break
print(data.decode())
mysock.close()
我收到此錯誤消息:
socket.gaierror: [Errno 11001] getaddrinfo failed.
我在另一個問題上看到這意味着我沒有有效的主機名,但我不確定為什么主機名無效。
該錯誤是因為您將錯誤的主機名傳遞給connect()
。 您需要將'data.pr4e'
更改為'data.pr4e.org'
。
此外,您的請求數據也格式不正確。 您需要從請求中刪除方案和主機名,並使用\r\n
而不是\n
。
嘗試這個:
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET /romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if (len(data) < 1):
break
print(data.decode())
mysock.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.