.. _HTTP-AT: HTTP AT 命令集 ================ :link_to_translation:`en:[English]` - :ref:`AT+HTTPCLIENT `:发送 HTTP 客户端请求 - :ref:`AT+HTTPGETSIZE `:获取 HTTP 资源大小 - :ref:`AT+HTTPCPOST `:Post 指定长度的 HTTP 数据 - :ref:`HTTP AT 错误码 ` .. _cmd-HTTPCLIENT: :ref:`AT+HTTPCLIENT `:发送 HTTP 客户端请求 ------------------------------------------------------------ 设置命令 ^^^^^^^^ **命令:** :: AT+HTTPCLIENT=,,<"url">,[<"host">],[<"path">],[,<"data">][,<"http_req_header">][,<"http_req_header">][...] **响应:** :: +HTTPCLIENT:, OK 参数 ^^^^ - ****:HTTP 客户端请求方法: - 1: HEAD - 2: GET - 3: POST - 4: PUT - 5: DELETE - ****:客户端请求数据类型: - 0: ``application/x-www-form-urlencoded`` - 1: ``application/json`` - 2: ``multipart/form-data`` - 3: ``text/xml`` - **<"url">**:HTTP URL,当后面的 ```` 和 ```` 参数为空时,本参数会自动覆盖这两个参数。 - **<"host">**:域名或 IP 地址。 - **<"path">**:HTTP 路径。 - ****:HTTP 客户端传输类型,默认值为 1: - 1: ``HTTP_TRANSPORT_OVER_TCP`` - 2: ``HTTP_TRANSPORT_OVER_SSL`` - **<"data">**: 当 ```` 是 POST 请求时,本参数为发送给 HTTP 服务器的数据。当 ```` 不是 POST 请求时,这个参数不存在(也就是,不需要输入逗号来表示有这个参数)。 - **<"http_req_header">**: 可发送多个请求头给服务器。 说明 ^^^^ - 如果 ``url`` 参数不为空,HTTP 客户端将使用它并忽略 ``host`` 参数和 ``path`` 参数;如果 ``url`` 参数被省略或字符串为空,HTTP 客户端将使用 ``host`` 参数和 ``path`` 参数。 - 某些已发布的固件默认不支持 HTTP 客户端命令(详情请见 :doc:`../Compile_and_Develop/How_to_understand_the_differences_of_each_type_of_module`),但是可通过以下方式使其支持该命令:``./build.py menuconfig`` > ``Component config`` > ``AT`` > ``AT http command support``,然后编译项目(详情请见 :doc:`../Compile_and_Develop/How_to_clone_project_and_compile_it`)。 - 在 ESP8266 平台上,如果 URL 是 HTTPS 类型或 ```` 参数是 2,需要将 at_process_task 任务堆栈增加到 4096 以上。即配置:`./build.py menuconfig` -> `Component config` -> `AT` -> `The stack size of the AT process task`,否则会由于堆栈不足而导致重启。 示例 ^^^^ :: // HEAD 请求 AT+HTTPCLIENT=1,0,"http://httpbin.org/get","httpbin.org","/get",1 // GET 请求 AT+HTTPCLIENT=2,0,"http://httpbin.org/get","httpbin.org","/get",1 // POST 请求 AT+HTTPCLIENT=3,0,"http://httpbin.org/post","httpbin.org","/post",1,"field1=value1&field2=value2" .. _cmd-HTTPGETSIZE: :ref:`AT+HTTPGETSIZE `:获取 HTTP 资源大小 ----------------------------------------------------------- 设置命令 ^^^^^^^^ **命令:** :: AT+HTTPGETSIZE= **响应:** :: +HTTPGETSIZE: OK 参数 ^^^^ - ****:HTTP URL。 - ****:HTTP 资源大小。 说明 ^^^^ - 某些已发布的固件默认不支持 HTTP 客户端命令(详情请见 :doc:`../Compile_and_Develop/How_to_understand_the_differences_of_each_type_of_module`),但是可通过以下方式使其支持该命令:``./build.py menuconfig`` > ``Component config`` > ``AT`` > ``AT http command support``,然后编译项目(详情请见 :doc:`../Compile_and_Develop/How_to_clone_project_and_compile_it`)。 - 在 ESP8266 平台上,如果 URL 是 HTTPS 类型或 ```` 参数是 2,需要将 at_process_task 任务堆栈增加到 4096 以上。即配置:`./build.py menuconfig` -> `Component config` -> `AT` -> `The stack size of the AT process task`,否则会由于堆栈不足而导致重启。 示例 ^^^^ :: AT+HTTPGETSIZE="http://www.baidu.com/img/bdlogo.gif" .. _cmd-HTTPCPOST: :ref:`AT+HTTPCPOST `:Post 指定长度的 HTTP 数据 ------------------------------------------------------------------ 设置命令 ^^^^^^^^ **命令:** :: AT+HTTPCPOST=,[,][,..] **响应:** :: OK > 符号 ``>`` 表示 AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数 ```` 的值时,传输开始。 若传输成功,则返回: :: SEND OK 若传输失败,则返回: :: SEND FAIL 参数 ^^^^ - ****:HTTP URL。 - ****:需 POST 的 HTTP 数据长度。最大长度等于系统可分配的堆空间大小。 - ****:```` 参数的数量。 - **[]**:可发送多个请求头给服务器。 说明 ^^^^ - 在 ESP8266 平台上,如果 URL 是 HTTPS 类型或 ```` 参数是 2,需要将 at_process_task 任务堆栈增加到 4096 以上。即配置:`./build.py menuconfig` -> `Component config` -> `AT` -> `The stack size of the AT process task`,否则会由于堆栈不足而导致重启。 .. _cmd-HTTPErrCode: :ref:`HTTP AT 错误码 ` ------------------------------------- - HTTP 客户端: .. list-table:: :header-rows: 1 * - HTTP 客户端错误码 - 说明 * - 0x7190 - Bad Request * - 0x7191 - Unauthorized * - 0x7192 - Payment Required * - 0x7193 - Forbidden * - 0x7194 - Not Found * - 0x7195 - Method Not Allowed * - 0x7196 - Not Acceptable * - 0x7197 - Proxy Authentication Required * - 0x7198 - Request Timeout * - 0x7199 - Conflict * - 0x719a - Gone * - 0x719b - Length Required * - 0x719c - Precondition Failed * - 0x719d - Request Entity Too Large * - 0x719e - Request-URI Too Long * - 0x719f - Unsupported Media Type * - 0x71a0 - Requested Range Not Satisfiable * - 0x71a1 - Expectation Failed - HTTP 服务器: .. list-table:: :header-rows: 1 * - HTTP 服务器错误码 - 说明 * - 0x71f4 - Internal Server Error * - 0x71f5 - Not Implemented * - 0x71f6 - Bad Gateway * - 0x71f7 - Service Unavailable * - 0x71f8 - Gateway Timeout * - 0x71f9 - HTTP Version Not Supported - HTTP AT: - ``AT+HTTPCLIENT`` 命令的错误码为 ``0x7000+Standard HTTP Error Code`` (更多有关 Standard HTTP/1.1 Error Code 的信息,请参考 `RFC 2616 `_)。 - 例如,若 AT 在调用 ``AT+HTTPCLIENT`` 命令时收到 HTTP error 404,则会返回 ``0x7194`` 错误码 (``hex(0x7000+404)=0x7194``)。