Procházet zdrojové kódy

【修改】部分函数和参数名称,完善注释信息

Signed-off-by: chenyong <1521761801@qq.com>
chenyong před 7 roky
rodič
revize
b4a992af84

+ 3 - 3
inc/webclient.h

@@ -112,7 +112,7 @@ struct webclient_session
     int resp_status;
 
     char *host;                         /* server host */
-    char *request;                      /* HTTP request address*/
+    char *req_url;                      /* HTTP request address*/
 
     int chunk_sz;
     int chunk_offset;
@@ -146,12 +146,12 @@ int webclient_write(struct webclient_session *session, const unsigned char *buff
 
 /* webclient GET/POST header buffer operate by the header fields */
 int webclient_header_fields_add(struct webclient_session *session, const char *fmt, ...);
-char *webclient_header_fields_get(struct webclient_session *session, const char *fields);
-int webclient_header_resp_status_get(struct webclient_session *session);
+const char *webclient_header_fields_get(struct webclient_session *session, const char *fields);
 
 /* send HTTP POST/GET request, and get response data */
 int webclient_response(struct webclient_session *session, unsigned char **response);
 int webclient_request(const char *URI, const char *header, const char *post_data, unsigned char **response);
+int webclient_resp_status_get(struct webclient_session *session);
 
 #ifdef RT_USING_DFS
 /* file related operations */

+ 7 - 7
samples/webclient_get_sample.c

@@ -43,7 +43,7 @@ int webclient_get_test(int argc, char **argv)
         URI = web_strdup(GET_LOCAL_URI);
         if(URI == RT_NULL)
         {
-            LOG_E("no memory for create URI buffer.");
+            rt_kprintf("no memory for create URI buffer.\n");
             return -1;
         }
     }
@@ -52,20 +52,20 @@ int webclient_get_test(int argc, char **argv)
         URI = web_strdup(argv[1]);
         if(URI == RT_NULL)
         {
-            LOG_E("no memory for create URI buffer.");
+            rt_kprintf("no memory for create URI buffer.\n");
             return -1;
         }
     }
     else
     {
-        LOG_E("webclient_get_test [URI]  - webclient GET request test.");
+        rt_kprintf("webclient_get_test [URI]  - webclient GET request test.\n");
         return -1;
     }
 
     buffer = (unsigned char *) web_malloc(GET_HEADER_BUFSZ);
     if (buffer == RT_NULL)
     {
-        LOG_E("no memory for receive buffer.");
+        rt_kprintf("no memory for receive buffer.\n");
         ret = -RT_ENOMEM;
         goto __exit;
 
@@ -82,12 +82,12 @@ int webclient_get_test(int argc, char **argv)
     /* send GET request by default header */
     if ((resp_status = webclient_get(session, URI)) != 200)
     {
-        LOG_E("webclient GET request failed, response(%d) error.", resp_status);
+        rt_kprintf("webclient GET request failed, response(%d) error.\n", resp_status);
         ret = -RT_ERROR;
         goto __exit;
     }
 
-    LOG_I("webclient GET request response data :");
+    rt_kprintf("webclient GET request response data :");
 
     if(webclient_header_fields_get(session, "Content-Length"))
     {
@@ -96,7 +96,7 @@ int webclient_get_test(int argc, char **argv)
 
     if (content_length < 0)
     {
-        LOG_D("The webclient GET request type is chunked.");
+        rt_kprintf("The webclient GET request type is chunked.\n");
         do
         {
             bytes_read = webclient_read(session, buffer, GET_RESP_BUFSZ);

+ 5 - 5
samples/webclient_post_sample.c

@@ -46,7 +46,7 @@ int webclient_post_test(int argc, char **argv)
         URI = web_strdup(POST_LOCAL_URI);
         if(URI == RT_NULL)
         {
-            LOG_E("no memory for create URI buffer.");
+            rt_kprintf("no memory for create URI buffer.\n");
             return -1;
         }
     }
@@ -55,20 +55,20 @@ int webclient_post_test(int argc, char **argv)
         URI = web_strdup(argv[1]);
         if(URI == RT_NULL)
         {
-            LOG_E("no memory for create URI buffer.");
+            rt_kprintf("no memory for create URI buffer.\n");
             return -1;
         }
     }
     else
     {
-        LOG_E("webclient_post_test [URI]  - webclient POST request test.");
+        rt_kprintf("webclient_post_test [URI]  - webclient POST request test.\n");
         return -1;
     }
 
     buffer = (unsigned char *) web_malloc(POST_RESP_BUFSZ);
     if (buffer == RT_NULL)
     {
-        LOG_E("no memory for receive response buffer.");
+        rt_kprintf("no memory for receive response buffer.\n");
         ret = -RT_ENOMEM;
         goto __exit;
 
@@ -89,7 +89,7 @@ int webclient_post_test(int argc, char **argv)
     /* send POST request by default header */
     if ((resp_status = webclient_post(session, URI, post_data)) != 200)
     {
-        LOG_E("webclient POST request failed, response(%d) error.", resp_status);
+        rt_kprintf("webclient POST request failed, response(%d) error.\n", resp_status);
         ret = -RT_ERROR;
         goto __exit;
     }

+ 27 - 17
src/webclient.c

@@ -340,7 +340,7 @@ static int webclient_connect(struct webclient_session *session, const char *URI)
     int socket_handle;
     struct timeval timeout;
     struct addrinfo *res = RT_NULL;
-    char *request;
+    char *req_url;
 
     RT_ASSERT(session);
     RT_ASSERT(URI);
@@ -367,7 +367,7 @@ static int webclient_connect(struct webclient_session *session, const char *URI)
     }
 
     /* Check valid IP address and URL */
-    rc = webclient_resolve_address(session, &res, URI, &request);
+    rc = webclient_resolve_address(session, &res, URI, &req_url);
     if (rc != WEBCLIENT_OK)
     {
         LOG_E("connect failed, resolve address error(%d).", rc);
@@ -381,9 +381,9 @@ static int webclient_connect(struct webclient_session *session, const char *URI)
     }
 
     /* copy host address */
-    if (*request)
+    if (*req_url)
     {
-        session->request = web_strdup(request);
+        session->req_url = web_strdup(req_url);
     }
 
 #ifdef WEBCLIENT_USING_TLS
@@ -460,7 +460,7 @@ __exit:
  * @param session webclient session
  * @param fmt fields format
  *
- * @return >0: Number of successfully added
+ * @return >0: data length of successfully added
  *         <0: not enough header buffer size
  */
 int webclient_header_fields_add(struct webclient_session *session, const char *fmt, ...)
@@ -473,6 +473,11 @@ int webclient_header_fields_add(struct webclient_session *session, const char *f
 
     va_start(args, fmt);
     length = rt_vsnprintf(session->header->buffer + session->header->length, session->header->size, fmt, args);
+    if (length < 0)
+    {
+        LOG_E("add fields header data failed, return length(%d) error.", length);
+        return -WEBCLIENT_ERROR;
+    }
     va_end(args);
 
     session->header->length += length;
@@ -493,10 +498,10 @@ int webclient_header_fields_add(struct webclient_session *session, const char *f
  * @param session webclient session
  * @param fields fields keyword
  *
- * @return = NULL: get fields data filed
+ * @return = NULL: get fields data failed
  *        != NULL: success get fields data
  */
-char *webclient_header_fields_get(struct webclient_session *session, const char *fields)
+const char *webclient_header_fields_get(struct webclient_session *session, const char *fields)
 {
     char *resp_buf = RT_NULL;
     size_t resp_buf_len = 0;
@@ -543,6 +548,8 @@ char *webclient_header_fields_get(struct webclient_session *session, const char
  */
 int webclient_resp_status_get(struct webclient_session *session)
 {
+    RT_ASSERT(session);
+
     return session->resp_status;
 }
 
@@ -557,7 +564,8 @@ static int webclient_send_header(struct webclient_session *session, int method)
 
     if(session->header->length == 0)
     {
-        webclient_header_fields_add(session, "GET %s HTTP/1.1\r\n", session->request);
+        /* use default header data */
+        webclient_header_fields_add(session, "GET %s HTTP/1.1\r\n", session->req_url);
         webclient_header_fields_add(session, "Host: %s\r\n", session->host);
         webclient_header_fields_add(session, "User-Agent: RT-Thread HTTP Agent\r\n\r\n");
 
@@ -567,6 +575,7 @@ static int webclient_send_header(struct webclient_session *session, int method)
     {
         if (method != WEBCLIENT_USER_METHOD)
         {
+            /* check and add fields header data */
             if (memcmp(header, "HTTP/1.", strlen("HTTP/1.")))
             {
                 char *header_buffer = RT_NULL;
@@ -580,12 +589,13 @@ static int webclient_send_header(struct webclient_session *session, int method)
                     goto __exit;
                 }
 
+                /* splice http request header data */
                 if (method == WEBCLIENT_GET)
                     length = rt_snprintf(session->header->buffer, session->header->size, "GET %s HTTP/1.1\r\n%s",
-                            session->request ? session->request : "/", header_buffer);
+                            session->req_url ? session->req_url : "/", header_buffer);
                 else if (method == WEBCLIENT_POST)
                     length = rt_snprintf(session->header->buffer, session->header->size, "POST %s HTTP/1.1\r\n%s",
-                            session->request ? session->request : "/", header_buffer);
+                            session->req_url ? session->req_url : "/", header_buffer);
                 session->header->length = length;
 
                 web_free(header_buffer);
@@ -606,7 +616,7 @@ static int webclient_send_header(struct webclient_session *session, int method)
                 webclient_header_fields_add(session, "Accept: */*\r\n");
             }
 
-            /* append user's header */
+            /* header data end */
             rt_snprintf(session->header->buffer + session->header->length, session->header->size, "\r\n");
             session->header->length += 2;
 
@@ -643,7 +653,7 @@ int webclient_handle_response(struct webclient_session *session)
     int rc = WEBCLIENT_OK;
     char *mime_buffer = RT_NULL;
     char *mime_ptr = RT_NULL;
-    char *transfer_encoding = RT_NULL;
+    const char *transfer_encoding;
     int i;
 
     RT_ASSERT(session);
@@ -716,7 +726,7 @@ int webclient_handle_response(struct webclient_session *session)
         return rc;
     }
 
-    return webclient_resp_status_get(session);
+    return session->resp_status;
 }
 
 /**
@@ -802,7 +812,7 @@ int webclient_get(struct webclient_session *session, const char *URI)
     resp_status = webclient_handle_response(session);
     if (resp_status > 0)
     {
-        char *location = webclient_header_fields_get(session, "Location");
+        const char *location = webclient_header_fields_get(session, "Location");
 
         /* relocation */
         if ((resp_status == 302 || resp_status == 301) && location)
@@ -874,7 +884,7 @@ int webclient_get_position(struct webclient_session *session, const char *URI, i
     resp_status = webclient_handle_response(session);
     if (rc > 0)
     {
-        char *location = webclient_header_fields_get(session, "Location");
+        const char *location = webclient_header_fields_get(session, "Location");
 
         /* relocation */
         if ((resp_status == 302 || resp_status == 301) && location)
@@ -1264,8 +1274,8 @@ int webclient_close(struct webclient_session *session)
     if(session->host)
         web_free(session->host);
 
-    if(session->request)
-        web_free(session->request);
+    if(session->req_url)
+        web_free(session->req_url);
 
     if(session->header && session->header->buffer)
     {