Python3의 http.client 모듈에 대한 심층적인 이해
이 글은 주로 Python3 관련 정보를 소개합니다. http.client 모듈에 대해 자세히 소개되어 있으니 필요하신 분들은 아래에서 참고하시면 됩니다.
http 모듈 소개
Python3의 http 패키지에는 HTTP 프로토콜 개발을 위한 여러 모듈이 포함되어 있습니다.
http.client는 상위 수준에서 사용되는 하위 수준 HTTP 프로토콜 클라이언트입니다. urllib.request 모듈에서 사용됩니다.
-
http.server 소켓 서버를 기반으로 하는 기본 HTTP 서버용 클래스가 포함되어 있습니다. 쿠키는 쿠키를 구현합니다
상태 관리 -
http 모듈은 또한 일련의 HTTP를 정의합니다.
상태 코드 . Python 3.5 클라이언트 모듈
HTTPStatus 클래스가 추가되었습니다. 모듈은 http 및 https 프로토콜 클라이언트를 구현하는 클래스를 정의합니다. 이 모듈은 일반적으로 직접 사용되지 않지만 .request 모듈은 이를 사용하여 URL을 처리합니다. 1. http.client.HTTP_PORT
http 프로토콜의 기본 포트 번호는 항상 80입니다2. http.client.HTTPS_PORT https 프로토콜의 기본 포트 번호는 항상 포트 443입니다.
3. http.client.responses
는 HTTP 1.1 상태 코드를
W3C 이름 사전에 매핑합니다. 예: >>> 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>, ...]
HTTPConnection 클래스
http.client.responses[http.client.NOT_FOUND] is 'Not Found'
문자열
이 호스트:포트 형식인 경우 포트 값이 추출되고, 그렇지 않으면 기본 8포트가 사용됩니다. 선택적 매개변수인 timeout이 제공되면 차단 작업은 지정된 시간 이후에 타임아웃됩니다. 제공되지 않으면 기본 전역 시간 초과 설정이 사용됩니다. 선택적 매개변수 source_address는 HTTP 연결의 소스 주소로 사용되는 호스트와 포트(host,port)의 튜플 형식이어야 합니다.http.client.HTTPConnection(host, port=None, [timeout, ]source_address=None)
HTTPSConnection 클래스
>>> 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)
기본 포트는 443입니다. context가 지정된 경우 다양한 SSL 옵션을 설명하는 ssl.SSLContext 클래스의 인스턴스여야 합니다.
key_file 및 cert_file은 더 이상 사용되지 않으며 ssl.SSLContext.load_cert_chain() 으로 대체되었습니다. 또는 ssl.create_default_context()를 사용하여 시스템이 신뢰하는 CA 인증서를 선택하세요. check_hostname 매개변수도 더 이상 사용되지 않습니다. 컨텍스트의 ssl.SSLContext.check_hostname속성을 사용하세요.
HTTPResponse 클래스
HTTPSConnection(host, port=None, key_file=None, cert_file=None, [timeout, ]source_address=None, *, context=None, check_hostname=None)
HTTPMessage 클래스
HTTPMessage 인스턴스는 HTTP 응답에서 반환된 헤더를 보유합니다.예외 클래스
HTTP예외
클래스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={})
지정된 방법과 URL 링크를 사용하여 서버에 요청을 보냅니다.
본문 부분을 지정하는 경우 헤더 부분을 보낸 후 본문 부분을 보냅니다. 본문 부분은 문자열, 바이트열 객체, 파일 객체 또는 바이트열 객체의 반복자가 될 수 있습니다. 다양한 신체 유형은 다양한 요구 사항에 해당합니다.
헤더 매개변수는 사전 유형인 HTTP 헤더의 매핑이어야 합니다.
헤더에 Content-Length 항목이 포함되어 있지 않으면 본문을 기준으로 자동으로 추가됩니다.
2. HTTPConnection.getresponse()
는 서버에서 반환된 콘텐츠를 가져오기 위해 요청이 전송된 후에 호출되어야 합니다.
3. HTTPConnection.set_debuglevel(level)
debug 수준을 설정합니다. 기본 디버그 수준은 0입니다. 이는 디버그 출력이 없음을 의미합니다.
4. HTTPConnection.set_tunnel(host, port=None, headers=None)
프록시 서버를 사용하여 연결을 허용하는 HTTP 터널 링크의 호스트와 포트를 설정합니다.
5. HTTPConnection.connect()
지정된 서버에 연결합니다. 기본적으로 이 메서드는 클라이언트가 연결되지 않은 경우 요청 시 자동으로 호출됩니다.
6. HTTPConnection.close()
링크를 닫습니다.
7. HTTPConnection.putrequest(request, selector,skip_host=False,skip_accept_encoding=False)
서버와 연결에 성공하면 이 메소드를 먼저 호출해야 합니다.
서버로 전송되는 콘텐츠에는 요청 문자열, 선택기 문자열 및 HTTP 프로토콜 버전이 포함됩니다.
8. HTTPConnection.putheader(header, 인수[, …])
HTTP 헤더를 서버로 보냅니다.
서버로 전송되는 내용에는 헤더 헤더, 콜론, 공백 및 매개변수 목록의 첫 번째 항목이 포함됩니다.
9. HTTPConnection.endheaders(message_body=None)
헤더의 끝을 식별하기 위해 서버에 빈 줄을 보냅니다.
10. HTTPConnection.send(data)
서버에 데이터를 보냅니다.
은 endheaders() 메서드 뒤, getresponse() 메서드 앞에 호출되어야 합니다.
HTTPResponse 객체 메서드
HTTPResponse 인스턴스에는 서버에서 반환된 HTTP 응답이 포함되어 있습니다.
요청 헤더와 본문 부분에 액세스하는 방법을 제공합니다.
HTTPResponse는 반복 가능한 객체이며 with 문을 사용하여 선언할 수 있습니다.
HTTPResponse 인스턴스에는 다음과 같은 메서드가 있습니다.
1. HTTPResponse.read([amt])
응답의 본문 부분을 읽고 반환합니다.
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 ,说明连接已关闭。
示例
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()
위 내용은 Python3의 http.client 모듈에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

Investing.com의 크롤링 전략 이해 많은 사람들이 종종 Investing.com (https://cn.investing.com/news/latest-news)에서 뉴스 데이터를 크롤링하려고합니다.

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.
