luat_soc_sdk_2024 V1.0
HTTP(S)相关接口

结构体

struct  luat_http_ctrl_t
 

宏定义

#define HTTP_GET_DATA   (2)
 
#define HTTP_POST_DATA   (1)
 
#define HTTP_OK   (0)
 
#define HTTP_ERROR_STATE   (-1)
 
#define HTTP_ERROR_HEADER   (-2)
 
#define HTTP_ERROR_BODY   (-3)
 
#define HTTP_ERROR_CONNECT   (-4)
 
#define HTTP_ERROR_CLOSE   (-5)
 
#define HTTP_ERROR_RX   (-6)
 
#define HTTP_ERROR_DOWNLOAD   (-7)
 
#define HTTP_ERROR_TIMEOUT   (-8)
 
#define HTTP_ERROR_FOTA   (-9)
 
#define HTTP_CALLBACK   (1)
 
#define HTTP_RE_REQUEST_MAX   (3)
 
#define HTTP_TIMEOUT   (10*60*1000)
 

类型定义

typedef void(* luat_http_cb) (int status, void *data, uint32_t data_len, void *user_param)
 

枚举

enum  {
  HTTP_STATE_IDLE , HTTP_STATE_CONNECT , HTTP_STATE_SEND_HEAD , HTTP_STATE_SEND_BODY_START ,
  HTTP_STATE_SEND_BODY , HTTP_STATE_GET_HEAD , HTTP_STATE_GET_BODY , HTTP_STATE_DONE ,
  HTTP_STATE_WAIT_CLOSE
}
 

函数

luat_http_ctrl_tluat_http_client_create (luat_http_cb cb, void *user_param, int adapter_index)
 创建一个http客户端
 
int luat_http_client_base_config (luat_http_ctrl_t *http_ctrl, uint32_t timeout, uint8_t debug_onoff, uint8_t retry_cnt)
 http客户端的通用配置,创建客户端时已经有默认配置,可以不配置
 
int luat_http_client_ssl_config (luat_http_ctrl_t *http_ctrl, int mode, const char *server_cert, uint32_t server_cert_len, const char *client_cert, uint32_t client_cert_len, const char *client_cert_key, uint32_t client_cert_key_len, const char *client_cert_key_password, uint32_t client_cert_key_password_len)
 客户端SSL配置,只有访问https才需要配置
 
int luat_http_client_clear (luat_http_ctrl_t *http_ctrl)
 清空用户设置的POST数据和request head参数
 
int luat_http_client_set_user_head (luat_http_ctrl_t *http_ctrl, const char *name, const char *value)
 设置一条用户的request head参数,Content-Length一般不需要,在设置POST的body时自动生成
 
int luat_http_client_start (luat_http_ctrl_t *http_ctrl, const char *url, uint8_t type, uint8_t ipv6, uint8_t continue_mode)
 启动一个http请求
 
int luat_http_client_close (luat_http_ctrl_t *http_ctrl)
 停止当前的http请求,调用后不再有http回调了
 
int luat_http_client_destroy (luat_http_ctrl_t **p_http_ctrl)
 完全释放掉当前的http客户端
 
int luat_http_client_post_body (luat_http_ctrl_t *http_ctrl, void *data, uint32_t len)
 POST请求时发送body数据,如果数据量比较大,可以在HTTP_STATE_SEND_BODY回调里分次发送
 
int luat_http_client_get_status_code (luat_http_ctrl_t *http_ctrl)
 http获取状态码
 
int luat_http_client_pause (luat_http_ctrl_t *http_ctrl, uint8_t is_pause)
 http客户端设置暂停
 
int luat_http_client_set_get_offset (luat_http_ctrl_t *http_ctrl, uint32_t offset)
 GET请求时要求服务器从offset位置开始传输数据,谨慎使用
 

详细描述

宏定义说明

◆ HTTP_CALLBACK

#define HTTP_CALLBACK   (1)

在文件 luat_http.h64 行定义.

◆ HTTP_ERROR_BODY

#define HTTP_ERROR_BODY   (-3)

在文件 luat_http.h56 行定义.

◆ HTTP_ERROR_CLOSE

#define HTTP_ERROR_CLOSE   (-5)

在文件 luat_http.h58 行定义.

◆ HTTP_ERROR_CONNECT

#define HTTP_ERROR_CONNECT   (-4)

在文件 luat_http.h57 行定义.

◆ HTTP_ERROR_DOWNLOAD

#define HTTP_ERROR_DOWNLOAD   (-7)

在文件 luat_http.h60 行定义.

◆ HTTP_ERROR_FOTA

#define HTTP_ERROR_FOTA   (-9)

在文件 luat_http.h62 行定义.

◆ HTTP_ERROR_HEADER

#define HTTP_ERROR_HEADER   (-2)

在文件 luat_http.h55 行定义.

◆ HTTP_ERROR_RX

#define HTTP_ERROR_RX   (-6)

在文件 luat_http.h59 行定义.

◆ HTTP_ERROR_STATE

#define HTTP_ERROR_STATE   (-1)

在文件 luat_http.h54 行定义.

◆ HTTP_ERROR_TIMEOUT

#define HTTP_ERROR_TIMEOUT   (-8)

在文件 luat_http.h61 行定义.

◆ HTTP_GET_DATA

#define HTTP_GET_DATA   (2)

在文件 luat_http.h49 行定义.

◆ HTTP_OK

#define HTTP_OK   (0)

在文件 luat_http.h53 行定义.

◆ HTTP_POST_DATA

#define HTTP_POST_DATA   (1)

在文件 luat_http.h50 行定义.

◆ HTTP_RE_REQUEST_MAX

#define HTTP_RE_REQUEST_MAX   (3)

在文件 luat_http.h66 行定义.

◆ HTTP_TIMEOUT

#define HTTP_TIMEOUT   (10*60*1000)

在文件 luat_http.h68 行定义.

类型定义说明

◆ luat_http_cb

typedef void(* luat_http_cb) (int status, void *data, uint32_t data_len, void *user_param)

在文件 luat_http.h47 行定义.

枚举类型说明

◆ anonymous enum

anonymous enum
枚举值
HTTP_STATE_IDLE 
HTTP_STATE_CONNECT 
HTTP_STATE_SEND_HEAD 
HTTP_STATE_SEND_BODY_START 
HTTP_STATE_SEND_BODY 
HTTP_STATE_GET_HEAD 
HTTP_STATE_GET_BODY 
HTTP_STATE_DONE 
HTTP_STATE_WAIT_CLOSE 

在文件 luat_http.h25 行定义.

函数说明

◆ luat_http_client_base_config()

int luat_http_client_base_config ( luat_http_ctrl_t * http_ctrl,
uint32_t timeout,
uint8_t debug_onoff,
uint8_t retry_cnt )

http客户端的通用配置,创建客户端时已经有默认配置,可以不配置

参数
http_ctrl客户端
timeout单次数据传输超时时间,单位ms
debug_onoff是否开启调试打印,开启后会占用一点系统资源
retry_cnt因传输异常而重传的最大次数
返回
成功返回0,其他值失败

◆ luat_http_client_clear()

int luat_http_client_clear ( luat_http_ctrl_t * http_ctrl)

清空用户设置的POST数据和request head参数

参数
http_ctrl客户端
返回
成功返回0,其他值失败

◆ luat_http_client_close()

int luat_http_client_close ( luat_http_ctrl_t * http_ctrl)

停止当前的http请求,调用后不再有http回调了

参数
http_ctrl客户端
返回
成功返回0,其他值失败

◆ luat_http_client_create()

luat_http_ctrl_t * luat_http_client_create ( luat_http_cb cb,
void * user_param,
int adapter_index )

创建一个http客户端

参数
cbhttp运行过程回调函数
user_param回调时用户自己的参数
adapter_index网卡适配器,不清楚的写-1,系统自动分配
返回
成功返回客户端地址,失败返回NULL

◆ luat_http_client_destroy()

int luat_http_client_destroy ( luat_http_ctrl_t ** p_http_ctrl)

完全释放掉当前的http客户端

参数
p_http_ctrl客户端指针的地址
返回
成功返回0,其他值失败

◆ luat_http_client_get_status_code()

int luat_http_client_get_status_code ( luat_http_ctrl_t * http_ctrl)

http获取状态码

参数
http_ctrl客户端
返回
状态码

◆ luat_http_client_pause()

int luat_http_client_pause ( luat_http_ctrl_t * http_ctrl,
uint8_t is_pause )

http客户端设置暂停

参数
http_ctrl客户端
is_pause是否暂停
返回
成功返回0,其他值失败

◆ luat_http_client_post_body()

int luat_http_client_post_body ( luat_http_ctrl_t * http_ctrl,
void * data,
uint32_t len )

POST请求时发送body数据,如果数据量比较大,可以在HTTP_STATE_SEND_BODY回调里分次发送

参数
http_ctrl客户端
databody数据
lenbody数据长度
返回
成功返回0,其他值失败

◆ luat_http_client_set_get_offset()

int luat_http_client_set_get_offset ( luat_http_ctrl_t * http_ctrl,
uint32_t offset )

GET请求时要求服务器从offset位置开始传输数据,谨慎使用

参数
http_ctrl客户端
offset偏移位置
返回
成功返回0,其他值失败

◆ luat_http_client_set_user_head()

int luat_http_client_set_user_head ( luat_http_ctrl_t * http_ctrl,
const char * name,
const char * value )

设置一条用户的request head参数,Content-Length一般不需要,在设置POST的body时自动生成

参数
http_ctrl客户端
namehead参数的name
valuehead参数的value
返回
成功返回0,其他值失败

◆ luat_http_client_ssl_config()

int luat_http_client_ssl_config ( luat_http_ctrl_t * http_ctrl,
int mode,
const char * server_cert,
uint32_t server_cert_len,
const char * client_cert,
uint32_t client_cert_len,
const char * client_cert_key,
uint32_t client_cert_key_len,
const char * client_cert_key_password,
uint32_t client_cert_key_password_len )

客户端SSL配置,只有访问https才需要配置

参数
http_ctrl客户端
mode<0 关闭SSL功能,并忽略后续参数; 0忽略证书验证过程,大部分https应用就可以这个配置,后续证书配置可以都写NULL和0; 2强制证书验证,后续证书相关参数必须写对
server_cert服务器证书字符串,结尾必须有0,如果不忽略证书验证,这个必须有
server_cert_len服务器证书数据长度,长度包含结尾的0,也就是strlen(server_cert) + 1
client_cert客户端证书字符串,结尾必须有0,双向认证才有,一般金融行业可能会用
client_cert_len客户端证书数据长度,长度包含结尾的0
client_cert_key客户端证书私钥字符串,结尾必须有0,双向认证才有,一般金融行业可能会用
client_cert_key_len客户端证书私钥数据长度,长度包含结尾的0
client_cert_key_password客户端证书私钥密码字符串,结尾必须有0,双向认证才有,如果私钥没有密码保护,则不需要
client_cert_key_password_len客户端证书私钥密码数据长度,长度包含结尾的0
返回
成功返回0,其他值失败

◆ luat_http_client_start()

int luat_http_client_start ( luat_http_ctrl_t * http_ctrl,
const char * url,
uint8_t type,
uint8_t ipv6,
uint8_t continue_mode )

启动一个http请求

参数
http_ctrl客户端
urlhttp请求完整的url,如果有转义字符需要提前转义好
type请求类型,0 get 1 post 2 put 3 delete
ipv6是否存在IPV6的服务器
data_mode大数据模式,接收数据超过1KB的时候,必须开启。开启后请求头里自动加入"Accept: application/octet-stream\r\n"
返回
成功返回0,其他值失败