Skip to content

开发者接口

辅助函数

Note

仅在控制台测试 HTTPX 或发起少量请求时使用这些函数。使用 Client 将启用 HTTP/2 和连接池,以获得更高效且持久的连接。

httpx.request(method, url, *, params=None, content=None, data=None, files=None, json=None, headers=None, cookies=None, auth=None, proxy=None, timeout=Timeout(timeout=5.0), follow_redirects=False, verify=True, trust_env=True)

发送HTTP请求。

参数:

  • method - 新Request对象的HTTP方法:GETOPTIONSHEADPOSTPUTPATCHDELETE
  • url - 新Request对象的URL。
  • params - (可选) 包含在URL中的查询参数,可以是字符串、 字典或二元组序列。
  • content - (可选) 包含在请求体中的二进制内容,可以是字节或字节迭代器。
  • data - (可选) 包含在请求体中的表单数据,作为字典传递。
  • files - (可选) 包含在请求体中的上传文件字典。
  • json - (可选) 包含在请求体中的可JSON序列化对象。
  • headers - (可选) 包含在请求中的HTTP头部字典。
  • cookies - (可选) 包含在请求中的Cookie项字典。
  • auth - (可选) 发送请求时使用的认证类。
  • proxy - (可选) 所有流量应路由到的代理URL。
  • timeout - (可选) 发送请求时使用的超时配置。
  • follow_redirects - (可选) 启用或禁用HTTP重定向。
  • verify - (可选) True表示使用默认CA包的SSL上下文, False表示禁用验证,或使用ssl.SSLContext实例来自定义上下文。
  • trust_env - (可选) 启用或禁用使用环境变量进行配置。

返回: Response

用法:

>>> import httpx
>>> response = httpx.request('GET', 'https://httpbin.org/get')
>>> response
<Response [200 OK]>
httpx.get(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)

发送GET请求。

参数: 参见httpx.request

注意datafilesjsoncontent参数在此函数中不可用, 因为GET请求不应包含请求体。

httpx.options(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)

发送OPTIONS请求。

参数: 参见httpx.request

注意datafilesjsoncontent参数在此函数中不可用, 因为OPTIONS请求不应包含请求体。

httpx.head(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)

发送HEAD请求。

参数: 参见httpx.request

注意datafilesjsoncontent参数在此函数中不可用, 因为HEAD请求不应包含请求体。

httpx.post(url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)

发送POST请求。

参数: 参见httpx.request

httpx.put(url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)

发送PUT请求。

参数: 参见httpx.request

httpx.patch(url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)

发送PATCH请求。

参数: 参见httpx.request

httpx.delete(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, timeout=Timeout(timeout=5.0), verify=True, trust_env=True)

发送DELETE请求。

参数: 参见httpx.request

注意datafilesjsoncontent参数在此函数中不可用, 因为DELETE请求不应包含请求体。

httpx.stream(method, url, *, params=None, content=None, data=None, files=None, json=None, headers=None, cookies=None, auth=None, proxy=None, timeout=Timeout(timeout=5.0), follow_redirects=False, verify=True, trust_env=True)

httpx.request()的替代方法,流式传输响应体 而不是一次性加载到内存中。

参数: 参见httpx.request

另见: 流式响应

Client 客户端

class httpx.Client(*, auth=None, params=None, headers=None, cookies=None, verify=True, cert=None, trust_env=True, http1=True, http2=False, proxy=None, mounts=None, timeout=Timeout(timeout=5.0), follow_redirects=False, limits=Limits(max_connections=100, max_keepalive_connections=20, keepalive_expiry=5.0), max_redirects=20, event_hooks=None, base_url='', transport=None, default_encoding='utf-8')

一个具有连接池、HTTP/2、重定向、cookie持久化等功能的HTTP客户端。

可以在线程间共享使用。

用法:

>>> client = httpx.Client()
>>> response = client.get('https://example.org')

参数:

  • auth - (可选) 发送请求时使用的认证类。
  • params - (可选) 包含在请求URL中的查询参数,可以是 字符串、字典或二元组序列。
  • headers - (可选) 发送请求时包含的HTTP头字典。
  • cookies - (可选) 发送请求时包含的Cookie项字典。
  • verify - (可选) 可以是True使用默认CA包的SSL上下文, False禁用验证,或ssl.SSLContext实例使用自定义上下文。
  • http2 - (可选) 布尔值指示是否启用HTTP/2支持。默认为False
  • proxy - (可选) 所有流量应路由到的代理URL。
  • timeout - (可选) 发送请求时使用的超时配置。
  • limits - (可选) 使用的限制配置。
  • max_redirects - (可选) 应跟随的重定向响应的最大数量。
  • base_url - (可选) 构建请求URL时使用的基础URL。
  • transport - (可选) 用于通过网络发送请求的传输类。
  • trust_env - (可选) 启用或禁用使用环境变量进行配置。
  • default_encoding - (可选) 用于解码响应文本的默认编码, 如果响应Content-Type头中未包含字符集信息。设置为可调用对象可自动检测 字符集。默认:"utf-8"。
headers

发送请求时要包含的HTTP头信息。

cookies

发送请求时要包含的Cookie值。

params

发送请求时URL中要包含的查询参数。

auth

当请求级别未传递认证类时使用的默认认证类。

另见认证

request(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

构建并发送请求。

等效于:

request = client.build_request(...)
response = client.send(request, ...)

关于各种参数如何与客户端级别配置合并, 请参阅Client.build_request()Client.send()配置合并

get(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送GET请求。

参数:参见httpx.request

head(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 HEAD 请求。

参数:参见 httpx.request

options(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送OPTIONS请求。

参数:参见httpx.request

post(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 POST 请求。

参数:参见 httpx.request

put(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 PUT 请求。

参数:参见 httpx.request

patch(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 PATCH 请求。

参数:参见 httpx.request

delete(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 DELETE 请求。

参数:参见 httpx.request

stream(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

httpx.request()的替代方法,流式传输响应体 而不是一次性加载到内存中。

参数:参见httpx.request

另请参阅:流式响应

build_request(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, timeout=, extensions=None)

构建并返回一个请求实例。

  • paramsheaderscookies参数 会与客户端设置的任何值合并。
  • url参数会与客户端设置的任何base_url合并。

另请参阅: 请求实例

send(self, request, *, stream=False, auth=, follow_redirects=)

发送请求。

请求会原样发送,不做修改。

通常你会使用Client.build_request()构建请求, 这样客户端级别的配置会合并到请求中, 但也支持直接传递显式的httpx.Request()

另请参阅:请求实例

close(self)

关闭传输层和代理。

AsyncClient 异步客户端

class httpx.AsyncClient(*, auth=None, params=None, headers=None, cookies=None, verify=True, cert=None, http1=True, http2=False, proxy=None, mounts=None, timeout=Timeout(timeout=5.0), follow_redirects=False, limits=Limits(max_connections=100, max_keepalive_connections=20, keepalive_expiry=5.0), max_redirects=20, event_hooks=None, base_url='', transport=None, trust_env=True, default_encoding='utf-8')

一个具有连接池、HTTP/2、重定向、cookie持久化等功能的异步HTTP客户端。

可以在任务间共享使用。

用法:

>>> async with httpx.AsyncClient() as client:
>>>     response = await client.get('https://example.org')

参数:

  • auth - (可选) 发送请求时使用的认证类。
  • params - (可选) 包含在请求URL中的查询参数,可以是 字符串、字典或二元组序列。
  • headers - (可选) 发送请求时包含的HTTP头字典。
  • cookies - (可选) 发送请求时包含的Cookie项字典。
  • verify - (可选) 可以是True使用默认CA包的SSL上下文, False禁用验证,或ssl.SSLContext实例使用自定义上下文。
  • http2 - (可选) 布尔值指示是否启用HTTP/2支持。默认为False
  • proxy - (可选) 所有流量应路由到的代理URL。
  • timeout - (可选) 发送请求时使用的超时配置。
  • limits - (可选) 使用的限制配置。
  • max_redirects - (可选) 应跟随的重定向响应的最大数量。
  • base_url - (可选) 构建请求URL时使用的基础URL。
  • transport - (可选) 用于通过网络发送请求的传输类。
  • trust_env - (可选) 启用或禁用使用环境变量进行配置。
  • default_encoding - (可选) 用于解码响应文本的默认编码, 如果响应Content-Type头中未包含字符集信息。设置为可调用对象可自动检测 字符集。默认:"utf-8"。
headers

发送请求时要包含的HTTP头信息。

cookies

发送请求时要包含的Cookie值。

params

发送请求时URL中要包含的查询参数。

auth

当请求级别未传递认证类时使用的默认认证类。

另见认证

async request(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

构建并发送请求。

等价于:

request = client.build_request(...)
response = await client.send(request, ...)

关于各参数如何与客户端级别配置合并,请参见 AsyncClient.build_request()AsyncClient.send()配置合并

async get(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 GET 请求。

参数: 参见 httpx.request

async head(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 HEAD 请求。

参数: 参见 httpx.request

async options(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 OPTIONS 请求。

参数: 参见 httpx.request

async post(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 POST 请求。

参数: 参见 httpx.request

async put(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 PUT 请求。

参数: 参见 httpx.request

async patch(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 PATCH 请求。

参数: 参见 httpx.request

async delete(self, url, *, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

发送 DELETE 请求。

参数: 参见 httpx.request

stream(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=, follow_redirects=, timeout=, extensions=None)

httpx.request() 的替代方法,以流式方式处理响应体 而非一次性加载到内存中。

参数:参见 httpx.request

另见:流式响应

build_request(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, timeout=, extensions=None)

构建并返回一个请求实例。

  • paramsheaderscookies参数 会与客户端设置的任何值合并。
  • url参数会与客户端设置的任何base_url合并。

另请参阅: 请求实例

async send(self, request, *, stream=False, auth=, follow_redirects=)

发送请求。

请求将按原样发送,不做修改。

通常建议使用 AsyncClient.build_request() 构建请求, 以便合并客户端级别的配置,但也支持直接传递显式的 httpx.Request()

另见:请求实例

async aclose(self)

关闭传输和代理。

Response 响应对象

一个 HTTP 响应。

  • def __init__(...)
  • .status_code - int 状态码
  • .reason_phrase - str 原因短语
  • .http_version - "HTTP/2""HTTP/1.1" HTTP版本
  • .url - URL 请求URL
  • .headers - Headers 响应头
  • .content - bytes 原始字节内容
  • .text - str 解码后的文本内容
  • .encoding - str 编码格式
  • .is_redirect - bool 是否为重定向响应
  • .request - Request 原始请求对象
  • .next_request - Optional[Request] 下一个请求对象
  • .cookies - Cookies Cookie信息
  • .history - List[Response] 历史响应列表
  • .elapsed - timedelta 时间间隔
  • 从发送请求到对该请求的响应调用 close() 之间经过的时间。 使用 total_seconds() 方法可以准确获取总耗时秒数。
  • def .raise_for_status() - Response 检查状态码是否成功
  • def .json() - Any 解析JSON响应
  • def .read() - bytes 读取响应内容
  • def .iter_raw([chunk_size]) - bytes iterator 原始字节迭代器
  • def .iter_bytes([chunk_size]) - bytes iterator 字节块迭代器
  • def .iter_text([chunk_size]) - text iterator 文本迭代器
  • def .iter_lines() - text iterator 行迭代器
  • def .close() - None 关闭响应
  • def .next() - Response 获取下一个响应
  • def .aread() - bytes 异步读取响应内容
  • def .aiter_raw([chunk_size]) - async bytes iterator 异步原始字节迭代器
  • def .aiter_bytes([chunk_size]) - async bytes iterator 异步字节块迭代器
  • def .aiter_text([chunk_size]) - async text iterator 异步文本迭代器
  • def .aiter_lines() - async text iterator 异步行迭代器
  • def .aclose() - None 异步关闭响应
  • def .anext() - Response 异步获取下一个响应

Request

一个 HTTP 请求对象。可以显式构造以更精确地控制实际发送的内容。

>>> request = httpx.Request("GET", "https://example.org", headers={'host': 'example.org'})
>>> response = client.send(request)
  • def __init__(method, url, [params], [headers], [cookies], [content], [data], [files], [json], [stream])
  • .method - str
  • .url - URL
  • .content - byte, byte iterator, 或 byte async iterator
  • .headers - Headers
  • .cookies - Cookies

URL

一个标准化、支持 IDNA 的 URL 对象。

>>> url = URL("https://example.org/")
>>> url.host
'example.org'
  • def __init__(url, **kwargs)
  • .scheme - str
  • .authority - str
  • .host - str
  • .port - int
  • .path - str
  • .query - str
  • .raw_path - str
  • .fragment - str
  • .is_ssl - bool
  • .is_absolute_url - bool
  • .is_relative_url - bool
  • def .copy_with([scheme], [authority], [path], [query], [fragment]) - URL

Headers

一个大小写不敏感的多值字典。

>>> headers = Headers({'Content-Type': 'application/json'})
>>> headers['content-type']
'application/json'
  • def __init__(self, headers, encoding=None)
  • def copy() - Headers

Cookies

一个类字典的 cookie 存储对象。

>>> cookies = Cookies()
>>> cookies.set("name", "value", domain="example.org")
  • def __init__(cookies: [dict, Cookies, CookieJar])
  • .jar - CookieJar
  • def extract_cookies(response)
  • def set_cookie_header(request)
  • def set(name, value, [domain], [path])
  • def get(name, [domain], [path])
  • def delete(name, [domain], [path])
  • def clear([domain], [path])
  • 标准可变映射接口

Proxy

代理服务器的配置。

>>> proxy = Proxy("http://proxy.example.com:8030")
>>> client = Client(proxy=proxy)
  • def __init__(url, [ssl_context], [auth], [headers])
  • .url - URL
  • .auth - tuple[str, str]
  • .headers - Headers
  • .ssl_context - SSLContext