2012-10-23 57 views
1

我需要使用POST,GET和其他方法並指定標題和超時來發出HTTP和HTTPS請求。製作HTTP [S]請求的首選方式

在互聯網上有很多這樣的例子,而且都是不同的:

import urllib.parse 
import urllib.request 

url = 'http://www.someserver.com/cgi-bin/register.cgi' 
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' 
values = {'name' : 'Michael Foord', 
      'location' : 'Northampton', 
      'language' : 'Python' } 
headers = { 'User-Agent' : user_agent } 

data = urllib.parse.urlencode(values) 
req = urllib.request.Request(url, data, headers) 
response = urllib.request.urlopen(req) 
the_page = response.read() 

fetcher = urllib2.build_opener() 
    fetcher.addheaders.append(('Cookie', 'aaaa=%s' % aaaa)) 
    res = fetcher.open(settings.ABC_URL) 

req = urllib2.Request(url=url) 
req.add_header('X-Real-IP', request.META['REMOTE_ADDR']) 
req.add_header('Cookie', request.META['HTTP_COOKIE']) 
req.add_header('User-Agent', request.META['HTTP_USER_AGENT']) 
resp = urllib2.urlopen(req).read() 

handler = urllib.urlopen('http://...') 
response = handler.read() 

我想在引擎蓋下的一些這些方法使用相同的機制。

還有其他使用httplib,的例子。我讀urllib2是首選的lib使用。

哪一個是首選方法?他們每個人有哪些優點和缺點?

回答

6

嘗試使用requests模塊修復Python中的URL /下載庫瘋狂。

+0

恐怕我只限於標準庫... – warvariuc

+0

但是您肯定有權訪問文件系統,您可以在其中創建文件夾和文件?使用Pythons導入機制,您不需要通過easy_install或pip來安裝軟件包(儘管更好,尤其是在virtualenv中),您可以下載請求並將tarball中的文件夾「請求」放入工作目錄。導入將工作並且使用保持不變,除非您的Python解釋器在另一個目錄中啓動,那麼您需要修改PYTHONPATH或sys.path。如果這不起作用,請解釋您爲什麼(以及如何)僅限於標準庫。 – Fabian

+0

我的意思是我不會在我的項目中做出這樣的決定,我擔心我將無法證明其他第三方模塊的使用合理 – warvariuc