国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 深入理解Python3中的http.client模塊

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

2020-09-27 10:51Glumes Python

這篇文章主要介紹了關于Python3中http.client模塊的相關資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。

http 模塊簡介

Python3 中的 http 包中含有幾個用來開發 HTTP 協議的模塊。

  • http.client 是一個底層的 HTTP 協議客戶端,被更高層的 urllib.request 模塊所使用。
  • http.server 包含基于 socketserver 的基本 HTTP 服務器的類。
  • http.cookies 實現 cookie 狀態管理
  • http.cookiejar 與 cookie 相關

http 模塊還定義了一系列的 HTTP 狀態碼。

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

?
1
2
3
4
5
6
7
>>> 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 狀態碼和相應的說明可以在 Python 的官方文檔上找到: https://docs.python.org/3/library/http.html

http.client 模塊

http.client 模塊定義了實現 http 和 https 協議客戶端的類。

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

常量

http 模塊中的常量:

1、http.client.HTTP_PORT

http 協議默認的端口號,總是 80 端口

2、http.client.HTTPS_PORT

https 協議默認的端口號,總是 443 端口

3、http.client.responses

將 HTTP 1.1 狀態碼映射到 W3C 名字的字典。

例如:

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

基本類

HTTPConnection 類

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

HTTPConnection 實例表示與 HTTP 服務器的事務。

實例化 HTTPConnection 時應該傳遞一個主機和可選的端口號。如果沒有傳遞端口,而主機字符串是以 host:port 的形式,則會提取出端口值,否則將使用默認的 8- 端口。

如果給定了可選參數 timeout ,阻塞操作將會在給定的時間后超時,若未給定,則使用默認的全局 timeout 設置。

可選參數 source_address 應該以 host 和 port 的元組形式 (host,port),用來作為 HTTP 連接的源地址。

示例代碼如下:

?
1
2
3
>>> 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 參數在 3.4 版本中移除了。

HTTPSConnection 類

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

HTTPSConnection 是 HTTPConnection 的子類,使用 SSL 與安全服務器聯系。

默認的端口是 443 端口。如果指定了 context ,必須是 ssl.SSLContext 類的實例來描述不同的 SSL 選項。

key_file 和 cert_file 已經被棄用了,取而代之的是 ssl.SSLContext.load_cert_chain() 。或者使用 ssl.create_default_context() 選擇系統信任的 CA 證書。

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

HTTPResponse 類

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

一旦連接成功就會返回該實例,該類的對象不能由用戶直接實例化。

HTTPMessage 類

HTTPMessage 實例持有從 HTTP response 返回的頭部。

異常類

HTTPException 類

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

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

類方法

HTTPConnection 對象方法

HTTPConnection 實例有如下的方法 :

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

使用指定的 method 方法和 url 鏈接向服務器發送請求。

如果指定 了body 部分,那么 body 部分將在 header 部分發送完之后發送過去。body 部分可以是一個字符串、字節對象、文件對象或者是字節對象的迭代器。不同的 body 類型對應不同的要求。

header 參數應該是 HTTP 頭部的映射,是一個字典類型。

如果 header 中不包含 Content-Length 項,那么會根據 body 的不同來自動添加上去。

2、HTTPConnection.getresponse()

必須在請求發送后才能調用得到服務器返回的內容,返回的是一個 HTTPResponse 實例。

3、HTTPConnection.set_debuglevel(level)

設置調試級別,默認調試級別是 0 ,意味著沒有調試輸出。

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

設置 HTTP 隧道鏈接的主機和端口,這允許連接使用代理服務器。

5、HTTPConnection.connect()

連接指定的服務器。默認情況下,如果客戶端沒有連接,則會在 request 請求時自動調用該方法。

6、HTTPConnection.close()

關閉鏈接。

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

當和服務器的鏈接成功后,應當首先調用該方法。

發送到服務器的內容包括:request 字符串、selector 字符串和 HTTP 協議版本。

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

發送 HTTP 頭部到服務器。

發送到服務器的內容包括:header 頭部、冒號、空格和參數列表里的第一個。

9、HTTPConnection.endheaders(message_body=None)

發送一個空白行到服務器,標識頭部的結束。

10、HTTPConnection.send(data)

發送數據到服務器。

應該在 endheaders() 方法之后和在 getresponse() 方法之前調用。

HTTPResponse 對象方法

HTTPResponse 實例包含了從服務器返回的 HTTP 回應。

它提供了訪問請求頭部和 body 部分的方法。

HTTPResponse 是一個可迭代的對象而且可以使用 with 語句來聲明。

HTTPResponse 實例有如下的方法 :

1、HTTPResponse.read([amt])

讀取和返回 response 的 body 部分。

2、HTTPResponse.readinto(b)

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

函數返回讀取的字節數

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

返回指定名稱 name 的 HTTP 頭部值,如果沒有相應匹配的 name 值,則返回默認的 None。如果有多個相匹配的,則返回所有的值,以逗號分隔。

4、HTTPResponse.getheaders()

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

5、HTTPResponse.fileno()

6、HTTPResponse.msg

7、HTTPResponse.version。

HTTP 協議版本

8、HTTPResponse.status

HTTP 狀態碼

9、HTTPResponse.reason

10、HTTPResponse.debuglevel

11、HTTPResponse.closed

如果為 True ,說明連接已關閉。

示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import http.client
import urllib,parser
# # 初始化一個 https 鏈接
conn = http.client.HTTPSConnection("www.python.org")
# 指定 request 請求的方法和請求的鏈接地址
conn.request("GET","/doc/")
# 得到返回的 http response
r1 = conn.getresponse()
# HTTP 狀態碼
print(r1.status,r1.reason)
# HTTP 頭部
print(r1.getheaders())
# body 部分
print(r1.read())
# 如果連接沒有關閉,打印輸出前 200 個字節
if not r1.closed:
 print(r1.read(200))
# 關閉連接后才能重新請求
conn.close()
# 請求一個不存在的文件或地址
conn.request("GET","/parrot.spam")
r2 = conn.getresponse()
print(r2.status,r2.reason)
conn.close()
# 使用 HEAD 請求,但是不會返回任何數據
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 請求,提交的數據放在 body 部分
params = urllib.parse.urlencode({'@number':12524,'@type':'issue','@action':'show'})
# post 請求數據,要帶上 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()
# 訪問被重定向
print(response.status,response.reason)
print(response.read().decode("utf-8"))
conn.close()

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.glumes.com/python3-http-client-module/

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲国产精品网站 | 九九久久国产 | 精品国产乱码久久久久久丨区2区 | 亚洲免费视频在线观看 | 国产成人综合在线观看 | 欧美三区 | 欧美日韩一级视频 | 81精品国产乱码久久久久久 | 精品在线一区二区 | 国产精品福利一区二区三区 | 狠狠搞狠狠操 | 国产三级精品在线 | 欧美精品在线视频 | 青娱乐自拍偷拍 | 色爱区综合五月激情 | 亚洲男人的天堂视频 | 成人黄色网 | 五月天狠狠爱 | 午夜在线视频 | 国产一区二区三区视频在线观看 | 亚洲精品片 | 亚洲精品日韩精品 | 亚洲精品一区二区 | 国产一区二区久久 | 欧美一二三 | av中文字幕在线观看 | 免费一区二区三区 | 精品国产一区二区三区性色av | 成人福利在线观看 | 成人三区| a黄视频 | 欧美二区三区 | 国产成人一区二区啪在线观看 | 欧美成人a | 亚洲久久 | 精品久| 一本a道v久大 | 久久国内精品 | 欧美一区二区三区在线观看视频 | 91精品久久久久久久 | 日韩成人精品 |