Просмотр исходного кода

【添加】webclient_content_length_get 函数用于获取响应的 Content-Length

chenyong 7 лет назад
Родитель
Сommit
a7bd084b8b
3 измененных файлов с 16 добавлено и 5 удалено
  1. 1 0
      inc/webclient.h
  2. 1 5
      samples/webclient_get_sample.c
  3. 14 0
      src/webclient.c

+ 1 - 0
inc/webclient.h

@@ -152,6 +152,7 @@ const char *webclient_header_fields_get(struct webclient_session *session, const
 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);
+int webclient_content_length_get(struct webclient_session *session);
 
 #ifdef RT_USING_DFS
 /* file related operations */

+ 1 - 5
samples/webclient_get_sample.c

@@ -89,11 +89,7 @@ int webclient_get_test(int argc, char **argv)
 
     rt_kprintf("webclient GET request response data :\n");
 
-    if(webclient_header_fields_get(session, "Content-Length"))
-    {
-        content_length = atoi(webclient_header_fields_get(session, "Content-Length"));
-    }
-
+    content_length = webclient_content_length_get(session);
     if (content_length < 0)
     {
         rt_kprintf("webclient GET request type is chunked.\n");

+ 14 - 0
src/webclient.c

@@ -553,6 +553,20 @@ int webclient_resp_status_get(struct webclient_session *session)
     return session->resp_status;
 }
 
+/**
+ * get http response data content length.
+ *
+ * @param session webclient session
+ *
+ * @return response status code
+ */
+int webclient_content_length_get(struct webclient_session *session)
+{
+    RT_ASSERT(session);
+
+    return session->content_length;
+}
+
 static int webclient_send_header(struct webclient_session *session, int method)
 {
     int rc = WEBCLIENT_OK;