当前位置: 首页 > news >正文

建设部监理网站官网网站建设服务费怎么入账

建设部监理网站官网,网站建设服务费怎么入账,邯郸做企业网站改版,成都网站建设优创智汇ESP-C3入门11. 创建最基本的HTTP请求一、menuconfig配置二、配置 CMakeLists1. 设置项目的额外组件目录2. 设置头文件搜索目录三、在 ESP32 上执行 HTTP 请求的基本步骤1. 创建 TCP 连接2. 设置 HTTP 请求3. 发送 HTTP 请求4. 接收 HTTP 响应5. 处理 HTTP 响应6. 关闭 TCP 连接… ESP-C3入门11. 创建最基本的HTTP请求一、menuconfig配置二、配置 CMakeLists1. 设置项目的额外组件目录2. 设置头文件搜索目录三、在 ESP32 上执行 HTTP 请求的基本步骤1. 创建 TCP 连接2. 设置 HTTP 请求3. 发送 HTTP 请求4. 接收 HTTP 响应5. 处理 HTTP 响应6. 关闭 TCP 连接三、示例1. http_request.h2. http_request.chttp_request_sendesp_http_client_config_t 结构体esp_http_client_init() 函数esp_http_client_perform() 函数esp_http_client_cleanup() 函数官网文档 https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/protocols/esp_http_client.html 一、menuconfig配置 打开ESP-IDF 4.4 CMD命令窗口进入项目运行 idf.py menuconfig打开配置窗口 选择 Component config- ESP HTTP client菜单 钩选 保存设置到自己项目 二、配置 CMakeLists 1. 设置项目的额外组件目录 # 设置项目的额外组件目录,允许使用ESP-IDF示例中的公共组件。 set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/components)2. 设置头文件搜索目录 CMakeLists.h 中要包含 esp_http_client的头文件位置 # 设置项目的包含目录这些是要搜索头文件的目录 set(INCLUDE_DIRS${INCLUDE_DIRS}${CMAKE_CURRENT_SOURCE_DIR}${IDF_PATH}/components/esp_http_client/include) include_directories(${INCLUDE_DIRS})这样就能使用 esp_http_client了。 三、在 ESP32 上执行 HTTP 请求的基本步骤 在 ESP32 上进行 HTTP 请求需要使用 TCP/IP 套接字和 HTTP 库来实现。 ESP32 IDF的esp_http_client 库提供了一组易于使用的 API可以自动处理 HTTP 头和响应内容。 1. 创建 TCP 连接 使用 tcpip_adapter 和 lwip 库创建一个 TCP 连接。可以使用 lwip 库提供的函数如 tcp_new() 和 tcp_connect()来创建和连接套接字。 2. 设置 HTTP 请求 使用 HTTP 协议创建一个请求消息。请求消息包括 HTTP 方法如 GET、POST 等和请求的 URL以及一些 HTTP 头部如 Content-Type、Content-Length 等和负载数据如果有的话。 3. 发送 HTTP 请求 使用 lwip 库提供的 tcp_write() 函数将请求消息发送到服务器。 4. 接收 HTTP 响应 使用 lwip 库提供的 tcp_recv() 函数从服务器接收响应消息。通常响应消息由一个或多个 TCP 数据包组成因此需要在接收数据时进行缓冲区处理。 5. 处理 HTTP 响应 对响应消息进行处理例如解析响应头、解码响应正文、处理错误码等。 6. 关闭 TCP 连接 使用 lwip 库提供的 tcp_close() 函数关闭 TCP 连接。 三、示例 1. http_request.h #ifndef HTTP_REQUEST_H #define HTTP_REQUEST_H #include esp_http_client.h #define HTTP_URL http://www.example.com esp_err_t http_event_handler(esp_http_client_event_t *evt); void request(const char* url); #endif 2. http_request.c #include esp_err.h #include esp_log.h #include network/include/http_request.hstatic const char *TAG HTTP_REQUEST; #define MAX_HTTP_OUTPUT_BUFFER 2048// HTTP 请求的处理函数 esp_err_t http_event_handler(esp_http_client_event_t *evt) {// 缓存http响应的bufferstatic char *output_buffer;// 已经读取的字节数static int output_len;switch(evt-event_id) {case HTTP_EVENT_ERROR:ESP_LOGD(TAG, HTTP_EVENT_ERROR);break;case HTTP_EVENT_ON_CONNECTED:ESP_LOGD(TAG, HTTP_EVENT_ON_CONNECTED);break;case HTTP_EVENT_HEADER_SENT:ESP_LOGD(TAG, HTTP_EVENT_HEADER_SENT);break;case HTTP_EVENT_ON_HEADER:ESP_LOGD(TAG, HTTP_EVENT_ON_HEADER, key%s, value%s, evt-header_key, evt-header_value);break;case HTTP_EVENT_ON_DATA:ESP_LOGD(TAG, HTTP_EVENT_ON_DATA, len%d, evt-data_len);if (!esp_http_client_is_chunked_response(evt-client)) {// 如果配置了user_data buffer则把响应复制到该buffer中if (evt-user_data) {memcpy(evt-user_data output_len, evt-data, evt-data_len);} else {if (output_buffer NULL) {output_buffer (char *) malloc(esp_http_client_get_content_length(evt-client));output_len 0;if (output_buffer NULL) {ESP_LOGE(TAG, Failed to allocate memory for output buffer);return ESP_FAIL;}}memcpy(output_buffer output_len, evt-data, evt-data_len);}output_len evt-data_len;}break;case HTTP_EVENT_ON_FINISH:ESP_LOGD(TAG, HTTP_EVENT_ON_FINISH);if (output_buffer ! NULL) {// Response is accumulated in output_buffer. Uncomment the below line to print the accumulated response// ESP_LOG_BUFFER_HEX(TAG, output_buffer, output_len);free(output_buffer);output_buffer NULL;}output_len 0;break;case HTTP_EVENT_DISCONNECTED:ESP_LOGI(TAG, HTTP_EVENT_DISCONNECTED);if (output_buffer ! NULL) {free(output_buffer);output_buffer NULL;}output_len 0;break;}return ESP_OK; }void request(const char *url) {// 响应结果放在这里char local_response_buffer[MAX_HTTP_OUTPUT_BUFFER] {0};// 创建一个 HTTP 客户端配置esp_http_client_config_t config {.method HTTP_METHOD_GET,.url url,.event_handler http_event_handler,.user_data local_response_buffer,.disable_auto_redirect true,};// 创建一个 HTTP 客户端并执行 GET 请求esp_http_client_handle_t client esp_http_client_init(config);esp_err_t err esp_http_client_perform(client);// 检查请求是否成功if (err ESP_OK) {int len esp_http_client_get_content_length(client);ESP_LOGI(TAG, Status %d, content_length %d,esp_http_client_get_status_code(client),//状态码len);//数据长度} else {printf(HTTP GET request failed: %s\n, esp_err_to_name(err));}printf(Response: %.*s\n, strlen(local_response_buffer), local_response_buffer);//断开并释放资源esp_http_client_cleanup(client); }主要函数说明 http_request_send 用于发送 HTTP 请求的函数 该函数接受一个 http_request_t 类型的指针作为参数其中包含了 HTTP 请求的 URL、请求方法、请求头以及 POST 数据。在 esp_http_client_config_t 结构体 用于配置 HTTP 客户端的参数包括 URL、请求方法和事件处理函数。然后根据请求中是否包含请求头和 POST 数据来设置 HTTP 客户端的相应参数。 esp_http_client_init() 函数 用来创建一个 HTTP 客户端句柄。 esp_http_client_perform() 函数 发送 HTTP 请求。 esp_http_client_cleanup() 函数 释放 HTTP 客户端句柄。
http://www.tj-hxxt.cn/news/134138.html

相关文章:

  • 做网站系统的网站开发的书籍
  • 大连网站制作选择ls15227saas建站是什么意思
  • 济南建站公司哪有苏州做网站多少钱
  • 外贸网站如何seo思政网站建设管理自查报告
  • 无锡 网站 seo 优化怎么做试玩平台推广网站
  • 国内优秀网站欣赏国内做五金加工的订单网站
  • 茶叶网站制作模板在外国做玄幻小说网站
  • 尤溪网站开发公司如何建立网站
  • 常州网站开发培训郴州做网站的公司
  • 蛋品 东莞网站建设网站设计是用什么做的
  • 排名好的青岛网站建设营销网站建设专业服务公司
  • 洛阳网站推广怎么做永康住房城乡建设局网站
  • 免费的黄冈网站有哪些平台呢永久久微信网页版手机端
  • 电商网站开发实战视频教程深圳网站建设最专业
  • html网站开发基础siteapp wordpress
  • 做网站有什么js特效室内设计软件免费下载
  • 公司网站的建设与运营管理制度网页升级访问新域名
  • 电子商务网站建设需求概述网站制作是怎么学的
  • 如何做国外网站推广wordpress增加底部导航
  • 做本地网站赚钱吗?泉州app开发
  • 苏州网站网络推广WordPress友情链接添加
  • 怎么把做的网站放到腾讯云里面什么网站可以做实验室
  • 婚纱摄影网站论文电子商务网站建设的期中考试
  • 气象网站建设管理的不足如何做网站seo优化
  • 网站域名怎么写好建立外贸网站
  • 酒店网站建设策划书wordpress 做问卷
  • 电子商务网站开发与设计报告上海公司网站建设价格
  • 建设信用网站的目的网页设计师培训班招生
  • 高密市建设局网站软文广告经典案例300
  • dw做网站如何让用户可编辑搜索引擎营销方案