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

Signed-off-by: chenyong <1521761801@qq.com>
master
chenyong 7 years ago
parent b5a9d4a83d
commit b4a992af84

@ -112,7 +112,7 @@ struct webclient_session
int resp_status; int resp_status;
char *host; /* server host */ char *host; /* server host */
char *request; /* HTTP request address*/ char *req_url; /* HTTP request address*/
int chunk_sz; int chunk_sz;
int chunk_offset; 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 */ /* webclient GET/POST header buffer operate by the header fields */
int webclient_header_fields_add(struct webclient_session *session, const char *fmt, ...); int webclient_header_fields_add(struct webclient_session *session, const char *fmt, ...);
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);
int webclient_header_resp_status_get(struct webclient_session *session);
/* send HTTP POST/GET request, and get response data */ /* send HTTP POST/GET request, and get response data */
int webclient_response(struct webclient_session *session, unsigned char **response); 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_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 #ifdef RT_USING_DFS
/* file related operations */ /* file related operations */

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

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

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

Loading…
Cancel
Save