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.

[参考译文] LAUNCHXL-CC3235SF:无法使用 httpPostHandler()生成成功响应页面

Guru**** 2576195 points
Other Parts Discussed in Thread: CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1045984/launchxl-cc3235sf-unable-to-generate-the-success-response-page-by-using-httpposthandler

器件型号:LAUNCHXL-CC3235SF
Thread 中讨论的其他器件:CC3200

尊敬的 TI 专家:

最近、当器件处于 AP 模式时、我在使用 HTTP 服务器配置器件时遇到错误。 现在、我可以执行该操作、但我希望生成一个响应、作为 HTML 页面、指示配置已完成。 这一代页面动态地运行、我无法这样做。 我已登录论坛、但未找到任何答案。 您能说出生成 HTML 页面的任何示例代码吗?

如果我输入192.168.1.1/info.html、则还有一个要求、它应生成显示器件 MAC ID 的 HTML 页面。 有人可以指出我们如何才能实现这一点吗?

我将在下面分享我的代码、以便更好地供您参考:

const uint8_t WiFiConfig_Success [NetApp_MAX_metadata_LEN]=
" 已添加 WiFi 配置 ";

void httpPostHandler (slNetAppRequest_t * netAppRequest)

uint16_t metadataLen;
int32_t status;
uint8_t requestIdx;
_U16 HTTP_STATUS;
uint8_t argcCallback;
uint8_t * argvArray;
uint8_t ** argvCallback =&argvArray;
uint32_t ulEvent;
argvArray = gHttpPostBuffer;
//("In HTTP Post Handler\r\n");
状态= httpCheckContentInDB (netAppRequest、&requestIdx、&argcCallback、
argvCallback);

如果(状态< 0)

metadataLen = preparePostMetadata (status);

HTTP_STATUS = sl_NetAppSend (netAppRequest->Handle、metadataLen、gMetadataBuffer、
SL_NetApp_Request_Response_FLAGS_metadata);
if (WiFi_Success = true)

sl_memcpy (gMetadataBuffer、%HOSTNAME%、strlen ((const char*) HOSTNAME));
metadataLen = prepareGetMetadata (status、
strlen ((const char*) WiFiConfig_Success)、
HttpContentTypeList_TextHtml);

sl_NetAppSend (netAppRequest->Handle、metadataLen、gMetadataBuffer、
(sl_NetApp_Request_Response_FLAGS_Continuation |
SL_NetApp_Request_Response_flags_metadata);
//标记为最后一段
sl_NetAppSend (netAppRequest->Handle、strlen ((const char*) WiFiConfig_Success)、
(uint8_t*) WiFiConfig_Success、0);


其他

HttpRequest[requestIdx].serviceCallback (requestIdx、&argcCallback、
argvCallback、netAppRequest);

请澄清我的疑问、因为我找不到任何与此相关的示例。

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

    您好!

    有2种方法可动态更新 HTTP GET 响应:

    在存储的 HTML 文件中使用令牌(一些"保留"令牌由 NWP 处理、其他令牌将传播到主机)、或者主机可以发送完整响应(如果在  ROM 或文件系统中找不到请求的"资源")。

    请参阅编程人员指南(请参阅 https://www.ti.com/lit/swru455的第9章 、特别是第9.7节)。

    LocalOTA (以及开箱即用示例)演示了第2种方法的使用。

    BR、

    Kobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="132163" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1045984/launchxl-cc3235sf-unable-to-generate-the-success-response-page-by-using-httpposthandler/3869278 #3869278"]租用是指程序员指南(请参阅 https://www.ti.com/lit/swru455的第9章 -特别是第9.7节)。[/引用]

    你好

    我已经检查了 LocalOTA 代码、但在理解代码的功能时似乎遇到了一些问题。 您能否指出这一部分 、主机可以发送完整响应(如果  在 ROM 或文件系统中找不到请求的"资源")。 通过提供一个小演示、例如假设在器件的 ROM 部分中找不到该页面、那么我们可以如何做到这一点。 请您提供一些示例、这是一个类型请求。 我们在 CC3200中使用了套接字、但在这种最新的器件绑定失败、我始终得到-98。 这就是为什么我要求为您提供一个示例、以便我能够以适当的方式了解此功能。

    我希望你能理解我的情况,等待你的答复。

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

    相关代码位于 LINK_LOCAL_TASK_TASK_C 中

    SimpleLinkNetAppRequestEventHandler()是接收请求的位置(通常这是在 pNetAppResponse 中使用 SL_NetApp_RESPONSE_Pending 进行响应的位置)。 然后,实际的请求处理被推迟(并在 linkLocalTask()环境中完成)。

    httpGetHandler 处理 GET 请求并根据"资源"将其转发到回调-例如、对于"/ota"、它将调用"otaGetCallback")。

    SL_NetAppSend 用于发送响应(HTTP 标头使用元数据)。  

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

    您好、Kobi、

    感谢您的善意回应。 我将在我实现所需的功能后向您更新。

    谢谢  

    Manish Thakur

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

    好的、谢谢。