.. _HTTP-AT: HTTP AT 命令集 ================ :link_to_translation:`en:[English]` - :ref:`AT+HTTPCLIENT <cmd-HTTPCLIENT>`:å‘é€ HTTP 客户端请求 - :ref:`AT+HTTPGETSIZE <cmd-HTTPGETSIZE>`ï¼šèŽ·å– HTTP 资æºå¤§å° - :ref:`AT+HTTPCPOST <cmd-HTTPCPOST>`:Post 指定长度的 HTTP æ•°æ® - :ref:`HTTP AT 错误ç <cmd-HTTPErrCode>` .. _cmd-HTTPCLIENT: :ref:`AT+HTTPCLIENT <HTTP-AT>`:å‘é€ HTTP 客户端请求 ------------------------------------------------------------ 设置命令 ^^^^^^^^ **命令:** :: AT+HTTPCLIENT=<opt>,<content-type>,<"url">,[<"host">],[<"path">],<transport_type>[,<"data">][,<"http_req_header">][,<"http_req_header">][...] **å“应:** :: +HTTPCLIENT:<size>,<data> OK 傿•° ^^^^ - **<opt>**:HTTP 客户端请求方法: - 1: HEAD - 2: GET - 3: POST - 4: PUT - 5: DELETE - **<content-type>**:客户端请求数æ®ç±»åž‹ï¼š - 0: ``application/x-www-form-urlencoded`` - 1: ``application/json`` - 2: ``multipart/form-data`` - 3: ``text/xml`` - **<"url">**:HTTP URL,当åŽé¢çš„ ``<host>`` å’Œ ``<path>`` 傿•°ä¸ºç©ºæ—¶ï¼Œæœ¬å‚æ•°ä¼šè‡ªåŠ¨è¦†ç›–è¿™ä¸¤ä¸ªå‚æ•°ã€‚ - **<"host">**ï¼šåŸŸåæˆ– IP 地å€ã€‚ - **<"path">**:HTTP 路径。 - **<transport_type>**:HTTP å®¢æˆ·ç«¯ä¼ è¾“ç±»åž‹ï¼Œé»˜è®¤å€¼ä¸º 1: - 1: ``HTTP_TRANSPORT_OVER_TCP`` - 2: ``HTTP_TRANSPORT_OVER_SSL`` - **<"data">**: 当 ``<opt>`` 是 POST è¯·æ±‚æ—¶ï¼Œæœ¬å‚æ•°ä¸ºå‘é€ç»™ HTTP æœåŠ¡å™¨çš„æ•°æ®ã€‚当 ``<opt>`` 䏿˜¯ 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 类型或 ``<transport_type>`` 傿•°æ˜¯ 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>`ï¼šèŽ·å– HTTP 资æºå¤§å° ----------------------------------------------------------- 设置命令 ^^^^^^^^ **命令:** :: AT+HTTPGETSIZE=<url> **å“应:** :: +HTTPGETSIZE:<size> OK 傿•° ^^^^ - **<url>**:HTTP URL。 - **<size>**: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 类型或 ``<transport_type>`` 傿•°æ˜¯ 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 <HTTP-AT>`:Post 指定长度的 HTTP æ•°æ® ------------------------------------------------------------------ 设置命令 ^^^^^^^^ **命令:** :: AT+HTTPCPOST=<url>,<length>[,<http_req_header_cnt>][,<http_req_header>..<http_req_header>] **å“应:** :: OK > ç¬¦å· ``>`` 表示 AT å‡†å¤‡å¥½æŽ¥æ”¶ä¸²å£æ•°æ®ï¼Œæ¤æ—¶æ‚¨å¯ä»¥è¾“入数æ®ï¼Œå½“æ•°æ®é•¿åº¦è¾¾åˆ°å‚æ•° ``<length>`` çš„å€¼æ—¶ï¼Œä¼ è¾“å¼€å§‹ã€‚ è‹¥ä¼ è¾“æˆåŠŸï¼Œåˆ™è¿”å›žï¼š :: SEND OK è‹¥ä¼ è¾“å¤±è´¥ï¼Œåˆ™è¿”å›žï¼š :: SEND FAIL 傿•° ^^^^ - **<url>**:HTTP URL。 - **<length>**:需 POST çš„ HTTP æ•°æ®é•¿åº¦ã€‚最大长度ç‰äºŽç³»ç»Ÿå¯åˆ†é…çš„å †ç©ºé—´å¤§å°ã€‚ - **<http_req_header_cnt>**:``<http_req_header>`` 傿•°çš„æ•°é‡ã€‚ - **[<http_req_header>]**:å¯å‘é€å¤šä¸ªè¯·æ±‚头给æœåŠ¡å™¨ã€‚ 说明 ^^^^ - 在 ESP8266 å¹³å°ä¸Šï¼Œå¦‚æžœ URL 是 HTTPS 类型或 ``<transport_type>`` 傿•°æ˜¯ 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-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 <https://tools.ietf.org/html/rfc2616>`_)。 - 例如,若 AT 在调用 ``AT+HTTPCLIENT`` 命令时收到 HTTP error 404,则会返回 ``0x7194`` 错误ç (``hex(0x7000+404)=0x7194``)。