diff --git a/inc/webclient.h b/inc/webclient.h index 7600a55..84205d3 100644 --- a/inc/webclient.h +++ b/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 */ diff --git a/samples/webclient_get_sample.c b/samples/webclient_get_sample.c index 0184d14..c6008ad 100644 --- a/samples/webclient_get_sample.c +++ b/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"); diff --git a/src/webclient.c b/src/webclient.c index 349d873..83e47e8 100644 --- a/src/webclient.c +++ b/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;