Thread 中讨论的其他器件: CC3100、 CC3100SDK
我一直在使用 MSP430F5529LP 和 CC3100Boost WIFI BoosterPack 进行实验、以开发低功耗物联网设备。 实验平台连接到服务器并成功交换数据。 我使用 RESTful API 进行通信/数据交换、并使用 TLS 实现安全性。 我还使用德州仪器的 simplelink 软件平台进行开发。 我正在使用 Get 方法与服务器通信。 我被卡住的地方是当我执行以下字符串长度超过111个字符的命令时。 (注意:代码片段是为 HTTP_Client 示例修改的)。 str
是字符串变量、带有 RESTful 命令。
strcat (str、str2); /*设置要发送 HTTP 请求的请求标头字段。 * HTTPCLI_setRequestFields (https 客户端、字段); /*发送 GET 方法请求。 * //此处我们设置 moreFlags = 0,因为 在后续阶段不再需要发送标头字段。 更多 信息、请参阅 HTTP 库 API 文档@ HTTPCLI_sendRequest。 */ MoreFlags = 0; RetVal = HTTPCLI_sendRequest (https 客户端、HTTPCLI_METHOD_Get、(const char *) str、moreFlags); if (RetVal < 0) { cli_Write("无法发送 HTTP GET 请求。\n\n"); 返回 RetVal; } sprintf ((char *) tmpBuf、"%d"、(sizeof (str)-1)); /* 此处、我们设置 lastFlag = 1、因为它是最后一个标头字段。 请参阅 HTTP 库 API 文档@参考 HTTPCLI_sendField 以了解更多信息。 */ lastFlag = 1; RetVal = HTTPCLI_sendField (https:客户端、HTTPCli_field_name_content_length、(char *) tmpBuf、lastFlag); if (RetVal < 0) { CLI_Write ("无法发送 HTTP GET 请求标头。\n\n"); 返回 RetVal; } RetVal = readResponse (httpClient); //发送获取数据/正文 RetVal = HTTPCli_sendRequestBody (httpClient、(const char *) str、(sizeof (str)-1)); if (RetVal < 0) { cli_Write ("未能发送 HTTP GET 请求正文。\n\n"); 返回 RetVal; } RetVal = readResponse (httpClient); 返回 RetVal;
如果 str
字符串长度超过111个字符,则作为状态 aboue,执行“HTTPCLI_sendRequest”时,函数将返回和错误代码。 HTTPCli_ESENDBUFSMALL (-107)
以下是 有关 HTTPCL_ESENDBUFSMALL 错误的更多详细信息。
/#define HTTPCli_ESENDBUFSMALL (-107)
内部发送缓冲区不够大。
修改 httpcli.c 中的 SEND_BUFLEN 宏、并在需要时重建库。
在 httpcli.c 中的代码片段之后执行
// #define content_BUFLEN 128 #define URI_BUFLEN 128 #define SEND_BUFLEN 128 #define MAX_FIELD_NAME_LEN 24
我尝试将 SEND_BUFLEN 更改为256、但仍然遇到错误。 因此、我认为可能有两条前进道路之一
- 根据需要更新缓冲器长度
- 将日期数据包分成许多128字节组。
如果有人能够分享有关如何推进的想法、请表示感谢。