Skip to content

requests_ 模块

http和dns请求库 该库属于上层网络库,主要处理http请求和dns解析。http基于esp32的http client包装实现,dns则是基于socket协议自行实现

DNS解析,目前仅支持A记录,TXT记录或其它记录类型建议使用https请求来完成

class dns

static query_a(domain: str, addr: pointer) -> int

参数类型说明
domainstr
addrpointer
  • 返回: int
C++ 映射 dns_query_a

static set_dns_server(ip: str) -> None

参数类型说明
ipstr
  • 返回: None

http请求中的静音数据封装

class formdata

static __init__() -> None

  • 返回: None

__deinit__() -> None

  • 返回: None

add_file(file_handle: pointer, filename: str, varname: str) -> None

添加一个表单文件,添加的文件只是打开了FILE句柄,在实际发送数据的时候才会进行读取,因此理论上支持较大的文件。不过需要注意vfat所设置的文件打开数量是否够用

file_handle: 打开的文件句柄,可以使用os.open这类的函数打开文件 filename: 文件的名称,这是表单提交时的filename字段的数据 varname: 表单变量的名称,这是表单提交时的name字段的数据

参数类型说明
file_handlepointer
filenamestr
varnamestr
  • 返回: None

add_var(varname: str, value: any) -> str

添加一个表单变量

varname: 表单变量的名称,这是表单提交时的name字段的数据 value: 变量的值,支持所有python可转换的变量类型,如bool/int/str/bytes/pointer等

参数类型说明
varnamestr
valueany
  • 返回: str
C++ 映射 FormData_add_var_any

http客户端

class http

static __init__(config: pointer) -> instance

创建http客户端对象

config: 定义在c/http_c.h中的一个请求信息配置,具体请看http_c.h中的注释 return: 返回创建的类成员实例,但如果config中的数据有问题,返回的类成员实例将是空的,这个过程中不会抛出异常,可以使用if not对返回值进行判断是否创建成功

参数类型说明
configpointer
  • 返回: instance
C++ 映射 HttpClient_create

__deinit__() -> str

  • 返回: str
C++ 映射 HttpClient_deinit

set_callback(callback: pointer, type: str) -> str

设置请求结束时的回调,本函数可以设置多种http请求的回调,参数callback都是回调函数,但回调函数的类型由type决定

callback: 回调函数 type: 回调类型,目前支持以下几种类型: "end"或不提供本参数:结束回调,该回调不论是成功还是失败都会响应,但只会响应一次,函数形式为function(req, result),是成功还是失败或其它问题可通过result的值来进行判断,result是一个C结构,定义在http_c.h中的HttpClientResult "progress":GET时的进度回调,设置方式:set_callback(callback, "progress", percent_increase, bytes_increase), 在调用set_callback设置时,参数3可以给出读取的总量每增长百分之多少就会触发回调一次,如1.5就表示每多获取1.5%的数据就会触发回调一次。参数4可以给出每多读取到多少字节就会触发回调一次,如1024就表示每获取1024字节就会触发一次回调。 当然,3和4参数都可以不给出,那么就默认为1%和1024字节。回调的响应形式为:function(req, percent_now, downloaded_bytes_now),参数2和3分别表示当前总GET数据量的百分比和已获取的字节数 "header":收到响应头后回调:当response的响应头全部收完之后就会进行回调,响应函数为function(req, headers_dict),注意参数2是一个dict,里面保存了所有响应头的key=>value对

参数类型说明
callbackpointer
typestr
  • 返回: str
C++ 映射 RequestsHttp_set_callback

get_result() -> str

获取请求的最后结果

return:返回值是一个C结构,定义在http_c.h中的HttpClientResult

  • 返回: str
C++ 映射 RequestsHttp_get_result

run_async(cpu_id: int) -> int

以异步运行的方式启动http请求

cpu_id: 运行在哪个CPU Core上,ESP32有两个核心,0为lvgl渲染和llpython的运行核心,1为音频等其它数据处理核心。如果希望core 0一点也没有阻塞的话,建议运行在core 1上。但不管是0还是1,都是以task的方式运行。task就有额外的RAM消耗。 所以,本参数还有另外一个值:-1。使用-1的也是运行于core 1上也就是不阻塞lvgl核心,但和task模式不一样的地方在于,他会阻塞core 1,但是省去了task模式所消耗的RAM return: 返回0即ESP_OK表示异步任务已启动,如果返回非0,肯定是因为task创建失败

参数类型说明
cpu_idint
  • 返回: int
C++ 映射 HttpClient_run_async

set_header(key: str, value: str) -> int

设置请求附加的头,本头可以覆盖掉默认的请求头

key: 头的key value: 头的value

参数类型说明
keystr
valuestr
  • 返回: int
C++ 映射 HttpClient_set_header

clean() -> void

提前清理请求,如果请求正在运行,可能会出现资源况态问题,所以一般不推荐直接调用此函数:除非你明确的知道自己在做什么,否则,交给stop()+__deinit__来自动完成是最好

  • 返回: void
C++ 映射 HttpClient_clean

stop() -> void

停止请求,如果请求正在运行,会标记要求请求尽快结束,实际一结束就会立即进行清理。如果没有运行或运行完了,则会立即进行清理

  • 返回: void
C++ 映射 HttpClient_stop

is_running() -> bool

判断请求是否正在运行 return: 返回True表示正在运行,返回False表示已经结束或没有运行

  • 返回: bool
C++ 映射 HttpClient_is_running

set_output_file(filename: str, append: bool) -> int

设置GET类的输出文件,所有GET到的数据都会写入到该文件,然后在请求结束后会自动关闭文件

filename: 一般是TF卡上的一个可写文件名 append: True为追加写入,False则会总是新建文件

参数类型说明
filenamestr
appendbool
  • 返回: int
C++ 映射 HttpClient_set_output_file

set_continue(offset: int) -> None

设置断点续传的开始位置。没有设置或设置为0,则不会启动断点续传

offset: 断点位置

参数类型说明
offsetint
  • 返回: None

基于 llpython ESP 平台构建