2011-11-06 66 views
4

我是python和網絡編程的新手,我遇到了一個簡單的程序問題。我基本上打開一個連接到一個不存在的網站,不知何故,似乎連接成功。而且,我得到一個200返回代碼,這意味着http服務器已經迴應了它存在並且連接正常。這裏是我的代碼的相關部分:我的程序如何連接到不存在的網站?

import httplib 

conn = httplib.HTTPConnection("Nonexistentsite.com", 80) 
conn.request("GET","/") 
r = conn.getresponse() 
print r.status, r.reason 
conn.close() 

,當我嘗試google.com或任何其他現有的網站,而不是nonexistentsite.com,我得到301或302 - Moved permanently

請您好好澄清爲什麼會發生這種情況嗎?如果有問題,我正在使用visualStudio2010(IronPython)。

+0

奇怪的是,在普通的Python中,我得到了正確的'socket.gaierror:[Errno -2]名稱或服務不知道',也許你遇到了一個錯誤? –

+0

除非它是一個諷刺性執行問題,否則我可能會建議您的代碼中存在其他問題。當網站不存在時,最有可能錯誤地捕獲從getresponse()中拋出的異常(在常規python上)。或者你是否已經用*完全*上面的代碼進行了測試?你說這是暗示有其他部分的相關部分。 – tjm

+0

@tjm我已經發布了所有的代碼。正如你所看到的,我沒有處理任何異常。這是預期的行爲嗎? –

回答

4

您可能正在使用虛假DNS結果的ISP,以便爲您提供 垃圾郵件頁面 有用的搜索頁面,而不是非易失名稱的錯誤。

ping Nonexistentsite.com在您測試Python代碼的機器上產生了什麼結果?

+0

DNS以某種方式找到它的一些IP [92.242.144.2],但ping超時。 –

0

在Cygwin的Python中運行你的代碼,我得到一個錯誤Nonexistentsite.com,所以我不確定IronPython是否有什麼奇怪的事情發生。

Google.com是Moved permanently,因爲Google有一個重定向主頁的系統。例如,如果他們發現您在英國,google.com會將您重定向到google.co.uk(未經測試,我在美國,但這是我讀過的)。如果我通過stackoverflow.com或其他沒有像Google那樣複雜的網站嘗試您的代碼,我會得到一個200 OK響應。

0

我測試了這個,但我用的是www.google.com。這發現了302 Found。經過一番搜索後,我發現302 Found表示存在重定向。這可能意味着用戶被重定向到正確的Google網站,例如他們的reigon,例如www.google.co.uk英國。 302 - 永久移動可能是同樣的事情,但它只是IronPython的不同。

編輯 -

它的存在是因爲谷歌仍在運行該服務器,並執行重定向。

相關問題