Skip to content
On this page

发送 HTTP 请求

AmiyaBot 内置了异步的 HTTP 请求工具,基于 aiohttp

不推荐使用 requests 库

requests 是著名的 python http 请求工具库。但其请求方法均为同步的。AmiyaBot 为异步程序,使用同步请求将会阻塞主线程运行。

如果是无法干预的同步请求行为,可以使用内置的线程池方法更变为异步。详见 处理阻塞操作

直接引入 http_requests 实例和 download_async 方法即可使用。

python
from amiyabot.network.httpRequests import http_requests
from amiyabot.network.download import download_async

await http_requests.get()
await http_requests.post()
await http_requests.post_form()
await http_requests.post_upload()
await http_requests.request()
await download_async()

http_requests 的请求均返回字符串的请求结果。download_async 方法则默认返回 bytes 结果。

GET

python
res: str = await http_requests.get()
参数名类型释义默认值
interfacestr请求地址
**kwargsrequest 参数

POST

post 方法默认在请求头内添加 'Content-Type': 'application/json',请求体仅接受字典或列表类型数据

python
res: str = await http_requests.post()
参数名类型释义默认值
interfacestr请求地址
payloaddict, list请求体
headersdict追加的请求头
**kwargsrequest 参数

发送 form 表单请求

post_form 方法类似 post 方法。唯一不同的是请求体仅接受字典类型,发送请求时会被构建为 form data 表单数据。

python
res: str = await http_requests.post_form()
参数名类型释义默认值
interfacestr请求地址
payloaddict请求体
headersdict追加的请求头
**kwargsrequest 参数

文件上传

文件上传 post_upload 方法以 form 表单的方式提交文件。

python
res: str = await http_requests.post_upload()
参数名类型释义默认值
interfacestr请求地址
filebytes文件 bytes
file_fieldstr表单数据中存放文件的字段名file
payloaddict请求体
headersdict追加的请求头
**kwargsrequest 参数

自定义请求

如果需要发送更多类型的请求,如 PUTPATCHDELETE 等,或需要自定义更多的请求场景,可使用 request 方法。

python
res: str = await http_requests.request()
参数名类型释义默认值
urlstr请求地址
methoddict请求方法post
request_namedict请求过程的 LOG 标识
**kwargsrequest 参数

下载文件

download_async 是提供的异步下载文件的方法。默认返回 bytes 类型的数据。

python
file: bytes = await download_async()
参数名类型释义默认值
urlstr请求地址
headersdict追加的请求头
stringifybool是否返回字符串结果False
**kwargsrequest 参数

同步下载

如某些场景需要使用同步下载,可使用同模块中的 download_async 方法。

python
from amiyabot.network.download import download_sync

file: bytes = download_sync()
参数名类型释义默认值
urlstr请求地址
headersdict追加的请求头
stringifybool是否返回字符串结果False
progressbool是否显示进度条False
**kwargsrequest 参数