In diesem Artikel geht es hauptsächlich um Python3 Die relevanten Informationen des http.client-Moduls wird ausführlich vorgestellt. Schauen wir uns das unten an
Das http-Paket in Python3 enthält mehrere Module zum Entwickeln des HTTP-Protokolls http.client ist ein Low-Level-HTTP-Protokoll-Client, der von höherrangigen Benutzern verwendet wird. Ebenen. Wird vom Modul urllib.request verwendet.
-Statuscode . Die HTTPStatus-Klasse wurde in der Python 3.5-Version
1. http.client.HTTP_PORTDie Standardportnummer des HTTP-Protokolls, immer Port 80
2 Die Standard-Portnummer des https-Protokolls, immer Port 443 3. http.client.responses
>>> 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>, ...]
W3C zu Namen .Zum Beispiel:
Basisklasse
Eine HTTPConnection-Instanz stellt eine Transaktion mit einem HTTP-Server dar.Beim Instanziieren einer HTTPConnection sollten ein Host und eine optionale Portnummer übergeben werden. Wenn kein Port übergeben wird und der Hoststring
die Form host:port hat, wird der Portwert extrahiert, andernfalls wird der standardmäßige 8-Port verwendet. Wenn der optionale Parameter Timeout angegeben ist, wird der Blockierungsvorgang nach der angegebenen Zeit abgebrochen. Wenn er nicht angegeben ist, wird die standardmäßige globale Timeout-Einstellung verwendet. Der optionale Parameter source_address sollte in Form eines Tupels aus Host und Port (host,port) vorliegen und als Quelladresse der HTTP-Verbindung verwendet werden. Der Beispielcode lautet wie folgt:source_address wurde in Version 3.2 hinzugefügt.
strikter Parameter wurde in Version 3.4 entfernt.
HTTPSConnection-Klassehttp.client.responses[http.client.NOT_FOUND] is 'Not Found'
HTTPSConnection ist eine Unterklasse von HTTPConnection, die SSL verwendet, um einen sicheren Server zu kontaktieren. Der Standardport ist Port 443. Wenn Kontext angegeben wird, muss es sich um eine Instanz der Klasse ssl.SSLContext handeln, um die verschiedenen SSL-Optionen zu beschreiben. key_file und cert_file wurden veraltet und durch ssl.SSLContext.load_cert_chain() ersetzt. Oder verwenden Sie ssl.create_default_context(), um ein CA-Zertifikat auszuwählen, dem das System vertraut. Der Parameter
check_hostname ist ebenfalls veraltet. Verwenden Sie das ssl.SSLContext.check_hostname Attribut des Kontexts.
http.client.HTTPConnection(host, port=None, [timeout, ]source_address=None)
HTTPResponse-Klasse
Diese Instanz wird zurückgegeben, sobald die Verbindung erfolgreich ist. Objekte dieser Klasse können nicht direkt vom Benutzer instanziiert werden.
HTTPMessage-KlasseHTTPMessage-Instanz enthält die von der HTTP-Antwort zurückgegebenen Header.
>>> 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)
Ausnahmeklasse
HTTPAusnahmeKlasse
Eine Unterklasse der Exception-Klasse und die Basisklasse für andere Ausnahmeklassen im http-Modul.
Andere Ausnahmeklassen:
NotConnected
InvalidURL
UnknownProtocol
UnknownTransferEncoding
UnimplementedFileMode
IncompletedRead
UnproperConnectionState
BadStatusLine
LineTooLong
CannotSendRequest
CannotSendHeader
ResponseNotReady
RemoteDisconnected
Klassenmethode
HTTPConnection-Objektmethode
HTTPConnection-Instanz verfügt über die folgenden Methoden:
1. HTTPConnection.request(method, url, body=None, headers={})
Senden Sie eine Anfrage mit der angegebenen Methode und dem angegebenen URL-Link an den Server.
Wenn der Körperteil angegeben ist, wird der Körperteil gesendet, nachdem der Header-Teil gesendet wurde. Der Körperteil kann eine Zeichenfolge, ein Byte-Objekt, ein Dateiobjekt oder ein Iterator von Byte-Objekten sein. Unterschiedliche Körpertypen entsprechen unterschiedlichen Anforderungen.
Der Header-Parameter sollte eine Zuordnung von HTTP-Headern sein, bei denen es sich um einen Wörterbuchtyp handelt.
Wenn der Header das Element „Content-Length“ nicht enthält, wird es automatisch basierend auf dem Text hinzugefügt.
2. HTTPConnection.getresponse()
muss aufgerufen werden, nachdem die Anfrage gesendet wurde, um den vom Server zurückgegebenen Inhalt zu erhalten.
3. HTTPConnection.set_debuglevel(level)
Legen Sie den Debug-Level fest, was bedeutet, dass keine Debug-Ausgabe erfolgt.
4. HTTPConnection.set_tunnel(host, port=None, headers=None)
Legen Sie den Host und den Port des HTTP-Tunnel-Links fest, der der Verbindung die Verwendung eines Proxyservers ermöglicht.
5. HTTPConnection.connect()
Mit dem angegebenen Server verbinden. Standardmäßig wird diese Methode automatisch auf Anfrage aufgerufen, wenn der Client nicht verbunden ist.
6. HTTPConnection.close()
Schließen Sie den Link.
7. HTTPConnection.putrequest(request, selector, Skip_host=False, Skip_accept_encoding=False)
Wenn die Verbindung mit dem Server erfolgreich ist, sollte diese Methode zuerst aufgerufen werden.
Der an den Server gesendete Inhalt umfasst: Anforderungszeichenfolge, Auswahlzeichenfolge und HTTP-Protokollversion.
8. HTTPConnection.putheader(header, argument[, …])
HTTP-Header an den Server senden.
Der an den Server gesendete Inhalt umfasst: Header, Doppelpunkt, Leerzeichen und den ersten in der Parameterliste.
9. HTTPConnection.endheaders(message_body=None)
Senden Sie eine Leerzeile an den Server, um das Ende des Headers zu identifizieren.
10. HTTPConnection.send(data)
Daten an den Server senden.
sollte nach der endheaders()-Methode und vor der getresponse()-Methode aufgerufen werden.
HTTPResponse-Objektmethoden
HTTPResponse-Instanzen enthalten die vom Server zurückgegebene HTTP-Antwort.
Es bietet Methoden für den Zugriff auf den Anforderungsheader und die Textteile.
HTTPResponse ist ein iterierbares Objekt und kann mit der with-Anweisung deklariert werden.
HTTPResponse-Instanzen verfügen über die folgenden Methoden:
1. HTTPResponse.read([amt])
Lesen Sie den Textteil der Antwort und geben Sie ihn zurück.
2. HTTPResponse.readinto(b)
Lesen Sie die angegebene Bytelänge len(b) und kehren Sie zum Pufferbyte b zurück.
Funktion gibt die Anzahl der gelesenen Bytes zurück
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 ,说明连接已关闭。
示例
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()
Das obige ist der detaillierte Inhalt vonVertiefendes Verständnis des http.client-Moduls in Python3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!