httplib用法

httplib的內容上是不少,也比較簡單。如下是一個很是簡單的例子,使用httplib獲取google首頁的html:


import httplib

conn = httplib.HTTPConnection("www.google.cn")

conn.request('get', '/')

print conn.getresponse().read().decode('u8')

conn.close()



下面詳細介紹httplib提供的經常使用類型和方法。



httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )



  HTTPConnection類的構造函數,表示一次與服務器之間的交互,即請求/響應。

參數host表示服務器主機,如:www.csdn.net;

port爲端口號,默認值爲80; 

參數strict的默認值爲false, 表示在沒法解析服務器返回的狀態行時( status line) (比較典型的狀態行如: HTTP/1.0 200 OK ),是否拋BadStatusLine 異常;

可選參數timeout 表示超時時間。



  HTTPConnection提供的方法:

HTTPConnection.request ( method , url [ , body [ , headers ]] )



  調用request 方法會向服務器發送一次請求,method 表示請求的方法,經常使用有方法有get 和post ;url 表示請求的資源的url ;body 表示提交到服務器的數據,必須是字符串(若是method 是"post" ,則能夠把body 理解爲html 表單中的數據);headers 表示請求的http 頭。



HTTPConnection.getresponse ()

  獲取Http 響應。返回的對象是HTTPResponse 的實例,關於HTTPResponse 在下面會講解。



HTTPConnection.connect ()  鏈接到Http 服務器。



HTTPConnection.close ()  關閉與服務器的鏈接。



HTTPConnection.set_debuglevel ( level )
  設置高度的級別。參數level 的默認值爲0 ,表示上輸出任何調試信息。



httplib.HTTPResponse
  HTTPResponse表示服務器對客戶端請求的響應。每每經過調用HTTPConnection.getresponse()來建立,它有以下方法和屬性:



HTTPResponse.read([amt])

  獲取響應的消息體。若是請求的是一個普通的網頁,那麼該方法返回的是頁面的html。可選參數amt表示從響應流中讀取指定字節的數據。



HTTPResponse.getheader(name[, default])

  獲取響應頭。Name表示頭域(header field)吊,可選參數default在頭域吊上存在的狀況下做爲默認值返回。



HTTPResponse.getheaders()

  以列表的形式返回全部的頭信息。



HTTPResponse.msg

  獲取全部的響應頭信息。



HTTPResponse.version

  獲取服務器所使用的http協議版本。11表示http/1.1;10表示http/1.0。



HTTPResponse.status

  獲取響應的狀態碼。如:200表示請求成功。



HTTPResponse.reason

  返回服務器處理請求的結果說明。通常爲」OK」



下面經過一個例子來熟悉HTTPResponse中的方法:

import httplib

conn = httplib.HTTPConnection("www.g.cn", 80, False)

conn.request('get','/',headers = {"Host": "www.google.cn","User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5","Accept": "text/plain"})

res = conn.getresponse()

print 'version:', res.version

print 'reason:', res.reason

print 'status:', res.status

print 'msg:', res.msg

print 'headers:', res.getheaders()

#html

#print '\n' + '-' * 50 + '\n'

#print res.read()

conn.close()



  Httplib模塊中還定義了許多常量,如:

Httplib. HTTP_PORT的值爲80,表示默認的端口號爲80;

Httplib.OK的值爲200,表示請求成功返回;

Httplib. NOT_FOUND的值爲404,表示請求的資源上存在;

能夠經過httplib.responses查詢相關變量的含義,如:

Print httplib.responses[httplib.NOT_FOUND]

#not found
相關文章
相關標籤/搜索