Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python http


Python中自带了http模块,http包中含有几个用来开发HTTP协议的模块。

  • http.client是一个底层的HTTP协议客户端,被更高层的urllib.request模块所使用。
  • http.server是基于socket server的基本HTTP服务器。
  • http.cookies是cookie相关的内容及相关策略。
  • http.cookiejar是针对cookie模块的管理封装。

Python http.client模块


http.client模块主要是客户端的HTTP通信实现库,主要是发送和接收HTTP报文。

其中主要是以下类:

  • HTTPConnection:基于HTTP协议的客户端,指定URL后,可以发送请求报文和接收响应报文。
  • HTTPResponse:封装来自服务器的HTTP响应,它提供对请求头和实体主体等的访问。

http.client HTTPConnection类

构造函数:

def __init__(self, host, port=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, source_address=None):

参数:

  • host:请求的服务器host,不能以http://等协议开头;
  • port:请求服务器的端口,数字类型;
  • timeout:单次请求的socket timeout,未设置时,默认使用模块内的全局超时时间,Python2.6版本新加的;
  • source_address:可选参数,是一个(主机,端口)的元组作为HTTP连接的源地址,Python3.2版本新加的;

request方法:

使用HTTP请求方法和向服务器发送请求。

def request(self, method, url, body=None, headers={}, *, encode_chunked=False):

参数:

  • method:HTTP请求的方式,如'GET'、'POST'等字符串形式,必须要大写形式
  • url:请求的url路径;
  • body:请求的body数据;
  • headers:请求追加的头信息,字典类型;
  • encode_chunked:仅当在headers中指定传输编码时,encode_chunked参数才相关。如果encode_chunked是False,则HTTPConnection对象假定所有编码由调用代码处理。如果它是True,主体将被块编码;

getresponse方法:

在发送请求后,调用此方法从服务器获取相应响应信息。

def getresponse(self):

返回值:

返回HTTPResponse对象实例。

http.client HTTPResponse类

字段:

status:服务器返回的状态码;

reason:服务器返回的原因短语;

read方法:

读取并返回响应正文,或直到下一个amt字节。

def read(self, amt=None):

参数:

  • amt:可选参数,表示读取指定长度的字符,默认为None,即读取所有内容;

示例

import http.client

http_conn = http.client.HTTPConnection('www.kfa.or.kr')
http_conn.set_debuglevel(1)
http_conn.request('GET', '/national/gamelist2.asp', headers={'User-Agent': 'python3.6/http'})
response = http_conn.getresponse()
print('\n')
print('-------------')
print(response.status)
print(response.read().decode('utf-8'))