0
我正在學習如何使用python通過HTTP協議連接套接字並檢索URL。有人可以協助指出我可能出錯的地方嗎?嘗試連接到套接字時出錯
Python代碼:
# Networking
## Connect to a Socket
import socket
mysock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80)) # Host, Port Number
cmd = 'GET http://data.pr4e.org/intro-short.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()
我在Windows上運行10命令提示符程序:
C:\Users\Kane\Desktop>python networking.py
我收到以下錯誤信息:
Traceback (most recent call last):
File "networking.py", line 7, in <module>
mysock.connect(('data.pr4.org', 80)) # Host, Port Number
File "C:\Users\Kane\Anaconda2\lib\socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.gaierror: [Errno 11001] getaddrinfo failed
感謝。
是「data.pr4.org」是連接到的有效服務器嗎? – coder
能夠知道真正的錯誤請問Python是什麼類型的異常:通過帶打印類型的try&catch語句(異常) –
除了使用無法通過DNS解析的主機名之外,HTTP請求不是有效的HTTP請求因爲它包含了URL而不僅僅是路徑,並且在大多數情況下也會丟失現在需要的主機頭,儘管HTTP/1.0並不嚴格要求它。如果你真的想要直接使用HTTP協議而不是更高級別的庫,那麼請不要猜測協議,而是研究書面標準,或者至少仔細觀察由正確實施的客戶端完成的現有HTTP流量。 –