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.

[参考译文] CC3220SF-LAUNCHXL:CC3220 HTTP 服务器-响应时有效载荷无法响应 HTTP POST

Guru**** 2555630 points
Other Parts Discussed in Thread: CC3200, CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/618200/cc3220sf-launchxl-cc3220-http-server---can-not-response-to-http-post-with-payload-on-response

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:CC3200CC3220SF

您好!

我在 CC3220内运行 HTTP 服务器。 它工作正常。

当 CC3220 HTTP 服务器收到 GET 请求并传输返回响应(有效载荷)时、客户端会正确接收到该响应。

 当 CC3220 HTTP 服务器 收到 POST 请求并将响应(有效载荷)传输回客户端时、不会接收到该响应。

打开 Wireshark、我可以看到在 TCP 套接字上接收到的 HTTP 响应正常、但仍在等待负载(内容长度>0)、

这种情况从未出现、因此请求失败。

------------------------

  int headers_BLOCK_flags = sl_NetApp_Request_Response_FLAGS_metadata;

  如果(PAYLOAD_Len > 0)

    headers_BLOCK_flags |= sl_NetApp_Request_Response_FLAGS_Continuation;

  /*生成元数据缓冲区*/

  sl_NetAppSend (handle、http->payload_index、&http->buffer[0]、headers_BLOCK_flags);

  如果(PAYLOAD_Len > 0)

  {

    /*发送有效载荷*/

    sl_NetAppSend (handle、payload_len、(uint8_t*) payload、0);

  }

------------------------

请提供建议!

Mickey

  int headers_BLOCK_flags = sl_NetApp_Request_Response_FLAGS_metadata;
  如果(PAYLOAD_Len > 0)     headers_BLOCK_flags |= sl_NetApp_Request_Response_FLAGS_Continuation;
  /*生成元数据缓冲区*/  sl_NetAppSend (handle、http->payload_index、&http->buffer[0]、headers_BLOCK_flags);
  如果(PAYLOAD_Len > 0)  {     /*发送有效载荷*/     sl_NetAppSend (handle、PAYLOAD_len、(uint8_t*) PAYLOAD、0);  }

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

    您使用的是自定义 HTTP 服务器还是运行 SDK 示例?

    谢谢、

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

    您好!

    我正在使用 SDK HTTP 服务器(NWP 中的服务器)

    等待您的回复、
    谢谢!
      Mickey

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

    您能否在 PAYLOAD_Len 处放置断点并查看此变量是否大于0?

    您可以对上面显示的两个 if 语句执行此操作。

    我还会不断研究我的终点。




    此致、

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

    您能否提供获取和发布 HTTP 请求的样片?

    关于 POST 请求的有效载荷,您的 MIME 类型应用程序/x-www-form-urlencoded 还是多部分/窗体数据? 这些 MIME 类型的处理方式不同。

    此外、对于 POST 请求。 您的内容长度报头有什么价值? 设置断点时、该值是否与 PAYLOAD_Len 的值相对应?

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

    您好、Bryan、

    帖子/ Get 没有什么特别的。 只是一些 json。 未采用 URL 编码。

    内容类型为 application/json

    内容长度是实际内容的确切大小

    谢谢!

    Mickey

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

    Mickey、您好!

    要使用 NWP 中内置的 HTTP API 处理、必须将请求设置为 MIME 类型 application/x-www-form-url 编码为 HTTP 标头中的内容类型。

    但是、您当前未使用 HTTP API、而是实施您自己的 HTTP 服务器。  如果我不能正确理解以下内容、请更正我的问题:  

    案例1:获取请求

    您可以成功地将 GET 请求从客户端发送到 CC3220中的 HTTP 服务器。
    CC3220中的 HTTP 服务器使用负载响应客户端。

    案例2:POST 请求

    您可以成功地将 POST 请求从客户端发送到 CC3220中的 HTTP 服务器。
    CC3220中的 HTTP 服务器部分响应客户端、但不向客户端发送负载。

    POST 请求不能使用有效负载进行响应,只能使用元数据( http://www.ti.com/lit/swru455的第9.7.1节)。 POST 请求能够从客户端接收有效负载,但只能使用 Metadata 进行响应。

    如果上述情况2不正确、而是尝试将负载从客户端发送到服务器、请向我们提供示例负载并请求进一步分析。 根据请求长度和/或用户应用程序中的后请求/响应的实施情况、可能需要使用长请求或延迟响应技术来处理请求( http://www.ti.com/lit/swru455第9.7.3.1节)。

    此致、
    Bryan Kahler

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

    您好!

    关于该帖子、您已正确理解。 我需要使用有效载荷响应 POST 请求。

    是否有计划使用所需的功能立即更新 SDK? SDK 中缺少更多问题

    1. HTTP 客户端(即使我迁移了 cc3200)

    2. HTTP 服务器能够响应带有负载的 POST

    谢谢!

    Mickey

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

    1.尚未发布 CC3220SF Gen 2 SDK 的 HTTP 客户端、 但是、如果过渡期间需要 HTTP 客户端、则在最新的第2代 SDK 中提供了从第1代到第2代的迁移指南、其中介绍了如何将代码从第1代移植到第2代。

    2.内部 HTTP 服务器不支持通过 POST 发送有效负载,但是,用户可以使用套接字实现自己的 HTTP 服务器。 有几个第三方资源介绍了如何使用各种架构在 C 语言中创建小型 HTTP 服务器。

    此致、
    Bryan Kahler