请选择 进入手机版 | 继续访问电脑版

石家庄老站长

点击联系客服
客服QQ:509006671 客服微信:mengfeiseo
 找回密码
 立即注册
查看: 16|回复: 0

ESP32基本应用程序http实验

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-5-1 23:45:22 | 显示全部楼层 |阅读模式
文章目录

1 HTTP客户端实验1.1新项目1.1.1新自有项目app-http-client1.1.2正式例行程序esp_http_client1.3代码分析直接使用

1 HTTP  Client  实验

本实验以app-wifi-station例程为基础,添加恶信官方例程3358www.sina.com/。

App-wifi-station例程:用于连接到指定的wifi。

恶信官方例程3358www.sina.com/: http作为客户端的多种功能进行测试。





1.1 新建工程

如果只想测试Http客户端相关内容,建议使用3358www.sina.com/

如果想新建自己的项目,请使用3358www.sina.com/,但这种方法比较麻烦。

1.1.1 新建自己的工程app-http-client

复制esp_http_client例程,然后将其重命名为3358www.sina.com/。将编译的可记录文件重命名为esp_http_client



在例程中,删除以前的1.1.2 直接使用官方例程esp_http_client相关文件(包括在main文件夹下),并复制官方例程3358 www  . Sina.com/my  3358 www  . Sina.com/相关文件

1.1.1 新建自己的工程app-http-client文件夹下的3358www.sina.com/文件内容复制到app-wifi-station文件夹下的app-http-client配置部分的新副本3358www
_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTAwOTk2,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" />[/ol]
menu "Example Configuration"
    config EXAMPLE_CONNECT_WIFI
        bool "connect using WiFi interface"
        default y
        help
            Protocol examples can use Wi-Fi and/or Ethernet to connect to the network.
            Choose this option to connect with WiFi
    if EXAMPLE_CONNECT_WIFI
                config ESP_WIFI_SSID
                        string "WiFi SSID"
                        default "myssid"
                        help
                                SSID (network name) for the example to connect to.
                config ESP_WIFI_PASSWORD
                        string "WiFi Password"
                        default "mypassword"
                        help
                                WiFi password (WPA or WPA2) for the example to use.
                config ESP_MAXIMUM_RETRY
                        int "Maximum retry"
                        default 5
                        help
                                Set the Maximum retry to avoid station reconnecting to the AP unlimited when the AP is really inexistent.
    endif
    ……/*省略了剩余代码*/
endmenu
  • 将官方例程下的howsmyssl_com_root_cert.pem文件复制过来,并在main文件夹下的CMakeLists.txtcomponent.mk文件内增加该文件

  • 将官方例程esp_http_client_example.c文件复制过来,更名为user_http_client.c,并添加进CMakeLists.txt
  • 新建user_http_client.h文件
  • 打开user_http_client.c文件,将app_main改为user_http_client_init,并删除多于的函数,完成后如下:
  • 将user_http_client_init函数在user_http_client.h文件中作声明,再添加到station_example_main.c文件下的app_main函数中
  • 使用idf.py menuconfig指令配置wifi
  • 使用idf.py build指令编译工程[/ol]
    1.1.2 直接使用官方例程esp_http_client
    [ol]
  • 直接将官方例程复制到自己做实验的文件夹下;
  • 使用idf.py menuconfig指令配置wifi;
  • 使用idf.py build编译即可;[/ol]
    注意:

    [ol]
  • 确保 examples\common_components\protocol_examples_common 该路径下有如下官方库文件
  • protocol_examples_common的作用就是连使用wifi或**Ethernet(以太网)**连接[/ol]
    1.3 代码分析
    [ol]
  • 在函数 http_test_task 中做了http client各种功能实验[/ol]
    static void http_test_task(void *pvParameters)
    {
        http_rest_with_url();          /*使用URL连接http server*/
        http_rest_with_hostname_path();/*使用hostname+path连接http server*/
        .
        .
        .
        ESP_LOGI(TAG, "Finish http example");
        vTaskDelete(NULL);
    }
  • 在功能测试用出现的 GET、POST、PUT、PATCH等,其含义如下
  • HTTP 配置参数[/ol]
    /**
    * @brief HTTP configuration
    */
    typedef struct {
        const char                  *url;                /*!
        const char                  *host;               /*服务器域名或ip地址 !
        int                         port;                /*端口 http默认80 https 默认443!
        const char                  *username;           /*用户名,认证时使用!
        const char                  *password;           /*用户密码,认证时使用!
        esp_http_client_auth_type_t auth_type;           /*认证方式!
        const char                  *path;               /*路径!
        const char                  *query;              /*请求参数!
        const char                  *cert_pem;           /*证书!
        const char                  *client_cert_pem;    /*!
        const char                  *client_key_pem;     /*!
        esp_http_client_method_t    method;                   /*!
        int                         timeout_ms;               /*请求超时!
        bool                        disable_auto_redirect;    /*!
        int                         max_redirection_count;    /*!
        http_event_handle_cb        event_handler;             /*!
        esp_http_client_transport_t transport_type;           /*!
        int                         buffer_size;              /*!
        int                         buffer_size_tx;           /*!
        void                        *user_data;               /*!
        bool                        is_async;                 /*!
        bool                        use_global_ca_store;      /*!
        bool                        skip_cert_common_name_check;    /*!
    } esp_http_client_config_t;
  • 实验函数分析[/ol]
    实验中用到的函数请参考官网:乐鑫官网HTTP client 解析
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|无图版|手机版|小黑屋|石家庄@IT精英团

    GMT+8, 2021-5-16 04:55 , Processed in 0.031802 second(s), 19 queries .

    Powered by Discuz! X3.4

    © 2001-2021 Comsenz Inc.

    快速回复 返回顶部 返回列表