TI工程师
您好。
我在httpget的例子基础上加了延时5秒及循环。想定期从服务器获取数据。但是HTTPClient_readResponseBody函数只有第一次循环可以获取数据。
请您指导我一下应该如何修改?
感谢您在百忙中可以看到我的求助,期待您的回答。
/* * ======== httpTask ======== * Makes a HTTP GET request */ void* httpTask(void* pvParameters) { bool moreDataFlag = false; char data[HTTP_MIN_RECV]; int16_t ret = 0; int16_t len = 0; while(1){ sleep(5); Display_printf(display, 0, 0, "Sending a HTTP GET request to '%s'\n", HOSTNAME); HTTPClient_Handle httpClientHandle; int16_t statusCode; httpClientHandle = HTTPClient_create(&statusCode,0); if(statusCode < 0) { printError("httpTask: creation of http client handle failed", statusCode); } ret = HTTPClient_setHeader(httpClientHandle, HTTPClient_HFIELD_REQ_USER_AGENT, USER_AGENT,strlen(USER_AGENT)+1, HTTPClient_HFIELD_PERSISTENT); if(ret < 0) { printError("httpTask: setting request header failed", ret); } ret = HTTPClient_connect(httpClientHandle,HOSTNAME,0,0); if(ret < 0) { printError("httpTask: connect failed", ret); } ret = HTTPClient_sendRequest(httpClientHandle,HTTP_METHOD_GET,REQUEST_URI, NULL,0, 0); if(ret < 0) { printError("httpTask: send failed", ret); } if(ret != HTTP_SC_OK) { printError("httpTask: cannot get status", ret); } Display_printf(display, 0, 0, "HTTP Response Status Code: %d\n", ret); len = 0; do { ret = HTTPClient_readResponseBody(httpClientHandle, data, sizeof(data), &moreDataFlag); if(ret < 0) { printError("httpTask: response body processing failed", ret); } Display_printf(display, 0, 0, "%.*s \r\n",ret,data); len += ret; } while(moreDataFlag); Display_printf(display, 0, 0, "Received %d bytes of payload\n", len); ret = HTTPClient_disconnect(httpClientHandle); if(ret < 0) { printError("httpTask: disconnect failed", ret); } HTTPClient_destroy(httpClientHandle); } //return(0); }