最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Python3中的http.client模塊

 更新時(shí)間:2017年03月29日 11:42:48   作者:Glumes  
這篇文章主要介紹了關(guān)于Python3中http.client模塊的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

http 模塊簡(jiǎn)介

Python3 中的 http 包中含有幾個(gè)用來(lái)開發(fā) HTTP 協(xié)議的模塊。

  • http.client 是一個(gè)底層的 HTTP 協(xié)議客戶端,被更高層的 urllib.request 模塊所使用。
  • http.server 包含基于 socketserver 的基本 HTTP 服務(wù)器的類。
  • http.cookies 實(shí)現(xiàn) cookie 狀態(tài)管理
  • http.cookiejar 與 cookie 相關(guān)

http 模塊還定義了一系列的 HTTP 狀態(tài)碼。

HTTPStatus 類是在 Python 3.5 版本中新增的。

>>> from http import HTTPStatus
>>> HTTPStatus.OK<HTTPStatus.OK: 200>
>>> HTTPStatus.OK == 200True
>>> http.HTTPStatus.OK.value200
>>> HTTPStatus.OK.phrase'OK'
>>> HTTPStatus.OK.description'Request fulfilled, document follows'
>>> list(HTTPStatus)[<HTTPStatus.CONTINUE: 100>, <HTTPStatus.SWITCHING_PROTOCOLS: 101>, ...]

具體的 HTTP 狀態(tài)碼和相應(yīng)的說(shuō)明可以在 Python 的官方文檔上找到: https://docs.python.org/3/library/http.html

http.client 模塊

http.client 模塊定義了實(shí)現(xiàn) http 和 https 協(xié)議客戶端的類。

該模塊通常不會(huì)直接使用,而是用封裝好的 urllib.request 模塊來(lái)使用他們處理 URL 。

常量

http 模塊中的常量:

1、http.client.HTTP_PORT

http 協(xié)議默認(rèn)的端口號(hào),總是 80 端口

2、http.client.HTTPS_PORT

https 協(xié)議默認(rèn)的端口號(hào),總是 443 端口

3、http.client.responses

將 HTTP 1.1 狀態(tài)碼映射到 W3C 名字的字典。

例如:

http.client.responses[http.client.NOT_FOUND] is 'Not Found'

基本類

HTTPConnection 類

http.client.HTTPConnection(host, port=None, [timeout, ]source_address=None)

HTTPConnection 實(shí)例表示與 HTTP 服務(wù)器的事務(wù)。

實(shí)例化 HTTPConnection 時(shí)應(yīng)該傳遞一個(gè)主機(jī)和可選的端口號(hào)。如果沒(méi)有傳遞端口,而主機(jī)字符串是以 host:port 的形式,則會(huì)提取出端口值,否則將使用默認(rèn)的 8- 端口。

如果給定了可選參數(shù) timeout ,阻塞操作將會(huì)在給定的時(shí)間后超時(shí),若未給定,則使用默認(rèn)的全局 timeout 設(shè)置。

可選參數(shù) source_address 應(yīng)該以 host 和 port 的元組形式 (host,port),用來(lái)作為 HTTP 連接的源地址。

示例代碼如下:

>>> h1 = http.client.HTTPConnection('www.python.org')
>>> h2 = http.client.HTTPConnection('www.python.org:80')>>> h3 = http.client.HTTPConnection('www.python.org', 80)
>>> h4 = http.client.HTTPConnection('www.python.org', 80, timeout=10)

source_address 是在 3.2 版本中添加的。

strict 參數(shù)在 3.4 版本中移除了。

HTTPSConnection 類

HTTPSConnection(host, port=None, key_file=None, cert_file=None, [timeout, ]source_address=None, *, context=None, check_hostname=None)

HTTPSConnection 是 HTTPConnection 的子類,使用 SSL 與安全服務(wù)器聯(lián)系。

默認(rèn)的端口是 443 端口。如果指定了 context ,必須是 ssl.SSLContext 類的實(shí)例來(lái)描述不同的 SSL 選項(xiàng)。

key_file 和 cert_file 已經(jīng)被棄用了,取而代之的是 ssl.SSLContext.load_cert_chain() ?;蛘呤褂?ssl.create_default_context() 選擇系統(tǒng)信任的 CA 證書。

check_hostname 參數(shù)也被棄用了,使用 context 的 ssl.SSLContext.check_hostname 屬性。

HTTPResponse 類

class http.client.HTTPResponse(sock, debuglevel=0, method=None, url=None)

一旦連接成功就會(huì)返回該實(shí)例,該類的對(duì)象不能由用戶直接實(shí)例化。

HTTPMessage 類

HTTPMessage 實(shí)例持有從 HTTP response 返回的頭部。

異常類

HTTPException 類

Exception 類的子類,也是 http 模塊中其他異常類的基類。
其他異常類:

  • NotConnected
  • InvalidURL
  • UnknownProtocol
  • UnknownTransferEncoding
  • UnimplementedFileMode
  • IncompletedRead
  • ImproperConnectionState
  • BadStatusLine
  • LineTooLong
  • CannotSendRequest
  • CannotSendHeader
  • ResponseNotReady
  • RemoteDisconnected

類方法

HTTPConnection 對(duì)象方法

HTTPConnection 實(shí)例有如下的方法 :

1、HTTPConnection.request(method, url, body=None, headers={})

使用指定的 method 方法和 url 鏈接向服務(wù)器發(fā)送請(qǐng)求。

如果指定 了body 部分,那么 body 部分將在 header 部分發(fā)送完之后發(fā)送過(guò)去。body 部分可以是一個(gè)字符串、字節(jié)對(duì)象、文件對(duì)象或者是字節(jié)對(duì)象的迭代器。不同的 body 類型對(duì)應(yīng)不同的要求。

header 參數(shù)應(yīng)該是 HTTP 頭部的映射,是一個(gè)字典類型。

如果 header 中不包含 Content-Length 項(xiàng),那么會(huì)根據(jù) body 的不同來(lái)自動(dòng)添加上去。

2、HTTPConnection.getresponse()

必須在請(qǐng)求發(fā)送后才能調(diào)用得到服務(wù)器返回的內(nèi)容,返回的是一個(gè) HTTPResponse 實(shí)例。

3、HTTPConnection.set_debuglevel(level)

設(shè)置調(diào)試級(jí)別,默認(rèn)調(diào)試級(jí)別是 0 ,意味著沒(méi)有調(diào)試輸出。

4、HTTPConnection.set_tunnel(host, port=None, headers=None)

設(shè)置 HTTP 隧道鏈接的主機(jī)和端口,這允許連接使用代理服務(wù)器。

5、HTTPConnection.connect()

連接指定的服務(wù)器。默認(rèn)情況下,如果客戶端沒(méi)有連接,則會(huì)在 request 請(qǐng)求時(shí)自動(dòng)調(diào)用該方法。

6、HTTPConnection.close()

關(guān)閉鏈接。

7、HTTPConnection.putrequest(request, selector, skip_host=False, skip_accept_encoding=False)

當(dāng)和服務(wù)器的鏈接成功后,應(yīng)當(dāng)首先調(diào)用該方法。

發(fā)送到服務(wù)器的內(nèi)容包括:request 字符串、selector 字符串和 HTTP 協(xié)議版本。

8、HTTPConnection.putheader(header, argument[, …])

發(fā)送 HTTP 頭部到服務(wù)器。

發(fā)送到服務(wù)器的內(nèi)容包括:header 頭部、冒號(hào)、空格和參數(shù)列表里的第一個(gè)。

9、HTTPConnection.endheaders(message_body=None)

發(fā)送一個(gè)空白行到服務(wù)器,標(biāo)識(shí)頭部的結(jié)束。

10、HTTPConnection.send(data)

發(fā)送數(shù)據(jù)到服務(wù)器。

應(yīng)該在 endheaders() 方法之后和在 getresponse() 方法之前調(diào)用。

HTTPResponse 對(duì)象方法

HTTPResponse 實(shí)例包含了從服務(wù)器返回的 HTTP 回應(yīng)。

它提供了訪問(wèn)請(qǐng)求頭部和 body 部分的方法。

HTTPResponse 是一個(gè)可迭代的對(duì)象而且可以使用 with 語(yǔ)句來(lái)聲明。

HTTPResponse 實(shí)例有如下的方法 :

1、HTTPResponse.read([amt])

讀取和返回 response 的 body 部分。

2、HTTPResponse.readinto(b)

讀取指定的字節(jié)長(zhǎng)度 len(b),并返回到緩沖字節(jié) b 。

函數(shù)返回讀取的字節(jié)數(shù)

3、HTTPResponse.getheader(name,default=None)

返回指定名稱 name 的 HTTP 頭部值,如果沒(méi)有相應(yīng)匹配的 name 值,則返回默認(rèn)的 None。如果有多個(gè)相匹配的,則返回所有的值,以逗號(hào)分隔。

4、HTTPResponse.getheaders()

以元組的形式返回所有的頭部信息 (header,value)。

5、HTTPResponse.fileno()

6、HTTPResponse.msg

7、HTTPResponse.version。

HTTP 協(xié)議版本

8、HTTPResponse.status

HTTP 狀態(tài)碼

9、HTTPResponse.reason

10、HTTPResponse.debuglevel

11、HTTPResponse.closed

如果為 True ,說(shuō)明連接已關(guān)閉。

示例

import http.client
import urllib,parser
# # 初始化一個(gè) https 鏈接
conn = http.client.HTTPSConnection("www.python.org")
# 指定 request 請(qǐng)求的方法和請(qǐng)求的鏈接地址
conn.request("GET","/doc/")
# 得到返回的 http response
r1 = conn.getresponse()
# HTTP 狀態(tài)碼
print(r1.status,r1.reason)
# HTTP 頭部
print(r1.getheaders())
# body 部分
print(r1.read())
# 如果連接沒(méi)有關(guān)閉,打印輸出前 200 個(gè)字節(jié)
if not r1.closed:
 print(r1.read(200))
# 關(guān)閉連接后才能重新請(qǐng)求
conn.close()
# 請(qǐng)求一個(gè)不存在的文件或地址
conn.request("GET","/parrot.spam")
r2 = conn.getresponse()
print(r2.status,r2.reason)
conn.close()
# 使用 HEAD 請(qǐng)求,但是不會(huì)返回任何數(shù)據(jù)
conn = http.client.HTTPSConnection("www.python.org")
conn.request("HEAD","/")
res = conn.getresponse()
print(res.status,res.reason)
data = res.read()
print(len(data))
conn.close()
# 使用 POST 請(qǐng)求,提交的數(shù)據(jù)放在 body 部分
params = urllib.parse.urlencode({'@number':12524,'@type':'issue','@action':'show'})
# post 請(qǐng)求數(shù)據(jù),要帶上 Content-type 字段,以告知消息主體以何種方式編碼
headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
conn = http.client.HTTPConnection("bugs.python.org")
conn.request("POST","/",params,headers)
response = conn.getresponse()
# 訪問(wèn)被重定向
print(response.status,response.reason)
print(response.read().decode("utf-8"))
conn.close()

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用python能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 支持PyTorch的einops張量操作神器用法示例詳解

    支持PyTorch的einops張量操作神器用法示例詳解

    這篇文章主要為大家介紹了支持PyTorch的einops張量操作神器用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • 一文詳解Python中的zip函數(shù)

    一文詳解Python中的zip函數(shù)

    在Python中,處理數(shù)據(jù)時(shí)經(jīng)常需要同時(shí)遍歷多個(gè)序列,zip函數(shù)提供了一種簡(jiǎn)潔的方式來(lái)組合這些序列,它用于將多個(gè)可迭代對(duì)象(如列表、元組等)的元素配對(duì),本文將給大家詳細(xì)介紹一下Python中的zip函數(shù),需要的朋友可以參考下
    2024-05-05
  • Python實(shí)現(xiàn)打乒乓小游戲

    Python實(shí)現(xiàn)打乒乓小游戲

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)打乒乓小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python實(shí)現(xiàn)圖像手繪效果的方法詳解

    Python實(shí)現(xiàn)圖像手繪效果的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)圖像手繪效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-09-09
  • OpenCV-PS擴(kuò)散毛玻璃效果的實(shí)現(xiàn)代碼

    OpenCV-PS擴(kuò)散毛玻璃效果的實(shí)現(xiàn)代碼

    PS的擴(kuò)散效果可以產(chǎn)生類似毛玻璃質(zhì)感的效果,使畫面有些毛毛的感覺。接下來(lái)通過(guò)本文給大家分享OpenCV-PS擴(kuò)散毛玻璃效果的實(shí)現(xiàn)代碼,一起看看吧
    2021-09-09
  • 基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別

    基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Python 如何查找特定類型文件

    Python 如何查找特定類型文件

    這篇文章主要介紹了Python 如何定位特定類型文件,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • 解決Jupyter因卸載重裝導(dǎo)致的問(wèn)題修復(fù)

    解決Jupyter因卸載重裝導(dǎo)致的問(wèn)題修復(fù)

    這篇文章主要介紹了解決Jupyter因卸載重裝導(dǎo)致的問(wèn)題修復(fù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python正則表達(dá)re模塊之findall()函數(shù)詳解

    Python正則表達(dá)re模塊之findall()函數(shù)詳解

    在python中,通過(guò)內(nèi)嵌集成re模塊可以直接調(diào)用來(lái)實(shí)現(xiàn)正則匹配,其中re.findall()函數(shù)可以遍歷匹配,可以獲取字符串中所有匹配的字符串,返回一個(gè)列表,這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)re模塊之findall()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 利用python如何在前程無(wú)憂高效投遞簡(jiǎn)歷

    利用python如何在前程無(wú)憂高效投遞簡(jiǎn)歷

    這篇文章主要給大家介紹了關(guān)于利用python如何在前程無(wú)憂高效投遞簡(jiǎn)歷的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

阳西县| 宜兰市| 中卫市| 黄大仙区| 崇阳县| 东乌珠穆沁旗| 任丘市| 拜泉县| 额济纳旗| 龙井市| 米林县| 开阳县| 临桂县| 贵港市| 双流县| 安吉县| 敦煌市| 乐都县| 天长市| 竹北市| 长兴县| 荔浦县| 福安市| 宣威市| 屯留县| 金溪县| 隆安县| 独山县| 呼和浩特市| 陈巴尔虎旗| 山东省| 罗山县| 新宁县| 崇左市| 蒲江县| 阿坝县| 韩城市| 金门县| 南皮县| 久治县| 湄潭县|