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.

[参考译文] LAUNCHCC3220MODASF:NWP/#39;s HTTP 服务器:以回复帖子的方式发送正文

Guru**** 2589265 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/903928/launchcc3220modasf-nwp-s-http-server-sending-body-in-reply-to-post

器件型号:LAUNCHCC3220MODASF

您好!

SWRU455J、第194页、9.7.3.1末尾显示

   无法将有效载荷数据作为响应的一部分返回、只能将 HTTP 标头作为元数据的一部分。

这是否仍然正确? HTTP 服务器实现应该允许这一点、这一点似乎很重要。

为什么我不能:

   pNetAppResponse->Status = SL_NetApp_RESPONSE_PENDING;

   //稍后...
   SL_NetAppSend (metadata_len、flags_metadata | flags_Continuation)
   SL_NetAppSend (data1_len、flags_Continuation)
   SL_NetAppSend (data2_len、flags_Continuation)
   SL_NetAppSend (data3_len、flags_Continuation)
   SL_NetAppSend (0、0)//零数据长度终止。
  
这是否起作用?

谢谢、Ralph。

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

    虽然我将使用"sl_NetAppSend (data3_len、0);"发送数据包、但这应该起作用。

    BR、

    Kobi

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

    谢谢 Kobi、SWRU455J 是不是这样? 您是说它应该从观察 NWP 源开始工作、还是因为您认为它应该是合理的预期?

    sl_NetAppSend (0、0)的原因是程序可能会接收到一个数据块、并希望通过 sl_NetAppSend (data3_len、flags_contin连续)将其发送出去、因此不知道这是它将接收到的最后一个数据块。 只有在下一次读取成功并传送文件结束时、它才能通过 sl_NetAppSend (0、0)进行中继。 因此、API 调用最好使用连续标志来明确允许通过零长度基准、而不使用连续标志来指示没有后续操作、输出应被清空。 即使它现在"即将开始工作"、如果不是 API 的文档部分、它也可能会在 SDK 升级中中断。

    谢谢、Ralph。

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

    您提到的限制仅与 POST 请求有关。

    您可以使用数据进行响应以获取请求。

    关于"sl_NetAppSend (0、0);"-我完全理解、使用此选项可能会简化您的发送逻辑。 我之前没有使用过(因此不确定是否接受零长度数据包) 、只更改了最后一个数据段中的标志字段。 它也不是太复杂。

    但是、您也可以测试您的方法以及方法是否有效-但使用安全(预计不会在任何 SP 或 SDK 升级时更改此类行为)。

    BR、

    Kobi   

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

    您好、Kobi、

    >您提到的限制仅与 POST 请求有关。

    是的、正如主题所说、帖子是我的兴趣所在。 因此、我认为限制仍然适用、SWRU455J 正确、NWP HTTP 服务器无法发送正文回复帖子。

    >、并且仅更改了最后一个数据段中的标志字段。 它也不是太复杂。

    我同意这样做不是太复杂、但依赖于当时知道数据包是许多接口无法实现的最后一个数据包。 因此,要么必须延迟部分或全部此数据包,以便将来允许长度至少为一个的最后 sl_NetAppSend(),要么使用长度为零的最后 sl_NetAppSend,稍后不使用继续标志。 延迟数据是不需要的、可能会导致同步问题、从而阻止文件末尾信号到达、因此通常情况下、只有零长度数据包才是唯一的选择、最好查看文档。

    感谢您提供的提示、如果它可以正常工作、它将继续工作。

    谢谢、Ralph。