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.

[参考译文] CC3220MOD:XMLHttpRequest POST 不断返回404错误

Guru**** 2563960 points
Other Parts Discussed in Thread: CC3200MOD, CC3220MOD

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/601572/cc3220mod-xmlhttprequest-post-is-constantly-returning-404-errors

器件型号:CC3220MOD
主题中讨论的其他器件:CC3200MOD

我们当前正在处理的项目是使用 CC3200MOD 启动的。 我们正在升级到 CC3220MODSF、但大多数代码都将从旧硬件项目移植过来。 我们在设备上托管一台服务器、以便客户能够与我们的另一个产品进行不懈的交互。 无线设备充当 AP。

我们已启动并运行服务器。 服务器的其中一个页面要求在客户端和服务器之间传输背景数据。 我们将使用 XMLHttpRequest 来完成此过程。 我们可以使用 XMLHttpRequest 获取请求、但不能发布请求。 网页代码与我们在 CC3200MODproject 中使用的代码相同。

当我们尝试执行 POST 请求时,将出现404错误作为响应。 服务器上将存在 POST 请求的页面,因此我们不确定会出现什么问题。 此代码在 CC3200MOD 上有效、但在 CC3220MOD 上不再有效。

使用以下代码的页面是 m1000_operator.html。 此代码每200ms 运行一次:

//需要请求更新的数据
var










http = new XMLHttpRequest();//重新加载 XML 数据 http.onreadystatechange = function(){ if (this.readyState =4 && this .status == 200){updateXMLData(this);};//如果按键,则更新 POST 数据(new.readyState==4 &this.status=200);{updateXMLData(threat)};“new_1000_operator”(new_value);“new_new_100000(_new_enue)”(_new_enue)
http.send("__SL_P_CUR="
http.onload =函数(){
//不执行任何操作
}

//重置 new_value
new_value ="";
}
否则(key!=""){
http.open ("post"、"m1000_operator.html"、true);
http.send("__SL_P_OPK="+ key);
http.onload = function (){
//不执行任何操作
}

//重置键值
键=";
}

//如果未按键,则更新显示数据
,否则为{http.open("get"
、"emulatordata.xml"、true);
http.send();
} 

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

    我已将此任务分配给主题专家。 应该会得到一点反馈。
    请耐心等待

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

    您好 Bryan、

    基本上、您所指的 HTTP 令牌机制也适用于 CC3220。

    对于 CC3220、有一种新机制比这种机制更方便、但让我们暂时搁置一下。

    "Get as I can see (获取、如我所见)"只会显示一个完整页面、因此实际上它不需要主机交互。 该页面直接从串行闪存加载。

    使用 POST,您应该从驱动程序向主机应用程序进行回调,回调应该在其中解析并提供令牌。

    您的代码中是否有回调?

    您是否在 user.h 中启用了 HTTP 回调机制? 它应该是 slcb_NetAppHttpServerHdlr。

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很好奇、您建议使用什么方法将信息从服务器传递到客户端? 我在嵌入式器件方面的经验更多、因此代码的服务器端对我来说是新事物。

    我已经为 Get 和 POST 请求配置了回调函数。 当 GET 请求到达服务器时、我看到回调函数被用来响应所需的数据。 但是、当发出 POST 请求时、不会调用任何回调函数。

    我在 CC3200MOD 上使用了该功能、因此我假设该功能可以轻松转移到 CC3220MODSF。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bryan、

    NWP 用户指南包括 HTTP 服务器的整个段落。  您可以在 http://www.ti.com/lit/ug/swru455b/swru455b.pdf 上找到它

    在第9.4节" RESTful API 处理"中、您可以看到所有已知 的_sl_P_token。 您还可以看到、要调用它们、您需要 使用/api/1/wlan 或 /api/1/netapp 作为资源。 从我在代码中看到的情况来看、无法像以前一样对私有令牌使用 POST。

    我建议将 POST (以及 Get)与新的 NetApp 机制结合使用。 第9.7节对此进行了说明。

    您还可以在 SDK 中的 out_for_box 和 local_OTA 示例中看到一个引用。

    通过这种机制、您实际上可以获得完整的 HTTP 标头、并应对其进行解析。

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我可以使用/api/1/netapp 作为帖子 URL 来找到解决方法。 我能够使用专用令牌、如 CC3220中的令牌。 我稍后仍将回顾程序员指南的第9.7节。 我们正在对产品进行快速原型设计、因此没有足够的时间重新编写已存在的代码。