This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220:HTTP Post 或 Get、一个正在应用中工作

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/757679/cc3220-http-post-or-get-one-is-working-in-application

器件型号:CC3220

您好!

我使用开箱即用应用程序将我的应用程序自定义为 cc3220 launchpad。

我想同时使用 HTTP Post 并在我的应用程序中频繁使用、有时只有 Get 正常工作并发布获取响应代码400。 有时、只有 Post 有效、Get 收到响应代码400。 我对出错的地方感到困惑。 即使我看到两个都正常工作的情况很少。 是否有人能帮助我解决我的问题?

我的代码如下所示、  

//帖子//
httpClientHandle = HttpClient_create (&statusCode、0);
if (statusCode < 0)
{
printError ("httpTask:创建 http 客户端句柄失败"、
状态代码);
}

RET = HttpClient_setHeader (httpClientHandle、
HttpClient_HFIELD_REQ_authorization、
con_type、strlen (con_type)、
HttpClient_HFIELD_PERSISTENT);
if (ret < 0)
{
printError ("httpTask:设置请求标头失败"、ret);
}

RET = HttpClient_connect (https://ClientHandle、HOSTNAME、0、0);
if (ret < 0)
{
printError ("httpTask: connect failed"、ret);
}

RET =
HttpClient_sendRequest (httpClientHandle、HTTP_METHOD_POST、POST_URI、
builtBuff、strlen (builtBuff)、
0);

if (ret!=200){
mcuReboot();
}

if (ret < 0)
{
printError ("httpTask: send failed"、ret);
}

if (ret!= HTTP_SC_OK)
{
printError ("httpTask:无法获取状态"、ret);
}

Len = 0;
操作
{
RET = HttpClient_readResponseBody (httpClientHandle、data、sizeof (data)、
MoreDataFlag (&M);
if (ret < 0)
{
printError ("httpTask: Response body processing failed"、ret);
}
UART_PRINT ("%.*s \r\n"、ret、data);
len += ret;
}
while (moreDataFlag);


RET = HttpClient_ddisconnect (httpClientHandle);
if (ret < 0)
{
printError ("httpTask: disconnect failed"、ret);
}

HttpClient_Destroy (httpClientHandle); 
HttpClient_handle httpClientHandle;
int16_t statusCode;
bool MoreDataFlag = false;
char data[HTTP_MIN_RECV];
int16_t ret = 0;
int16_t len = 0;

httpClientHandle = HttpClient_create (&statusCode、0);
if (statusCode < 0)
{
printError ("httpTask:创建 http 客户端句柄失败"、
状态代码);
}

RET = HttpClient_setHeader (httpClientHandle、
HttpClient_HFIELD_REQ_USER_AGENT、
USER_AGENT、strlen (USER_AGENT)、
0);
if (ret < 0)
{
printError ("httpTask:设置请求标头失败"、ret);
}

RET = HttpClient_connect (https://ClientHandle、HOSTNAME、0、0);
if (ret < 0)
{
printError ("httpTask: connect failed"、ret);
}

RET =
HttpClient_sendRequest (httpClientHandle、http_method_get、request_URI、
空、0、
0);

if (ret < 0)
{
printError ("httpTask: send failed"、ret);
}

if (ret!= HTTP_SC_OK)
{
printError ("httpTask:无法获取状态"、ret);
}

Len = 0;
操作
{
RET = HttpClient_readResponseBody (httpClientHandle、data、sizeof (data)、
MoreDataFlag (&M);

if (ret < 0)
{
printError ("httpTask: Response body processing failed"、ret);
}
UART_PRINT ("%.*s \r\n"、ret、data);
strcpy (builtBuff、data);

len += ret;
}
while (moreDataFlag);

RET = HttpClient_ddisconnect (httpClientHandle);
if (ret < 0)
{
printError ("httpTask: disconnect failed"、ret);
}

HttpClient_Destroy (httpClientHandle); 

我尝试在延迟时间为1分钟/30秒的离线位置呼叫并获取呼叫。

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您尝试从哪个服务器获取并发布信息? 如果您有自己控制的测试服务器设置、您是否能够记录或捕获服务器发送的 HTTP 数据包、以查看其实际发送到 CC3220的内容? 您是否尝试使用其他服务器?

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我尝试了2台不同的服务器、没有任何改进。

    您是否能够记录或捕获服务器发送的 HTTP 数据包、以查看其实际发送到 CC3220的内容?

    我将与服务器团队进行核实。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    我在 CC3220中得到该响应、
    错误! 代码= 415、说明= httpTask:无法获取状态
    {"消息":"频率 此资源不支持 EST 实体的媒体类型'application/json4'。"}
    错误! 代码= 400、说明= httpTask:无法获取状态
    www.w3.org/.../strict.dtd">
    请求错误

    请求错误



    HTTP 错误
    400.请求的形式很差。





    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您遇到的错误表明服务器有时会收到它认为是 CC3220的损坏请求。 要检查并确认错误是由来自 CC3220的格式错误的请求导致的、 请在 CC3220的底层 SL_Send ()请求之前插入 UART_PRINT()语句,以打印 CC3220发送的 HTTP 请求数据,或使用监听器捕获发送的 HTTP 数据包。

    如果确实发送了格式错误的 CC3220数据包、则需要调试和检查修改后的开箱即用程序、以查看可能导致该程序发生的原因。 使用 RTOS 对象查看器对这一点很有用、我在下面的文章中介绍了如何使用它:
    e2e.ti.com/.../2707429
    鉴于您提到您有时只会遇到此错误、我会注意潜在的竞争条件或线程时序问题。 除此之外、您应该查看任务的堆栈使用情况、并确保在出错时不会溢出。 我会在 HTTP 库的错误处理程序处放置一个断点、并使用 ROV 进行检查以确保未超出堆栈内存。 检查堆的状态也是谨慎的。

    如果您在调试中需要更多指导或有其他问题、请告诉我。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    我是否知道最适合易于使用的空气嗅探器?
    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很遗憾、我无法推荐或认可您应该使用的特定监听器。 有许多解决方案可满足您的需求、 即使我能够告诉您我的首选监听器设置、但由于您使用的平台(Windows 或 Linux)或您所在地区使用的适配器的可用性、这可能不是您的最佳选择。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    我在印度班格洛尔使用 Windows。 请告诉我您觉得很好的人。