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字节组。
如果有人能够分享有关如何推进的想法、请表示感谢。