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.

[参考译文] CC3235SF:HttpClient_CONNECT 返回-2006

Guru**** 2487425 points
Other Parts Discussed in Thread: LAUNCHXL-CC3235SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1197729/cc3235sf-httpclient_connect-returns--2006

器件型号:CC3235SF

您好!

我将 LAUNCHXL-CC3235SF 与 SDK 6.10.0.5搭配使用。

我的目标是在我的应用中实现 OTA_IF。

作为起点、我使用了"配置"示例、并尝试集成 OTA_IF。
我不使用 GitHub 或 Dropbox、因此我创建了自己的 ota_vender.c
集成已完成、配置正在运行。
当调用 OTA_getDownloadLink ()函数时,我正在使用 HTTP 连接从我的服务器下载 OTA 文件。
当我调用 HttpClient_connect()时,它返回错误代码-2006。

我不知道,为什么它返回一个错误代码,因为我测试了 http 连接与示例"httpget"和
它成功打开连接并下载文件。

有人可以帮助我解决这个问题吗?

此致

Thomas

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

    -2006表示 SL_RET_CODE_INVALID_INPUT (请参阅 simplelink/errors.h 中的)。

    这可能有很多原因 、但 我首先要检查的是 HOSTNAME。

    如果您可以单步进入  HttpClient_connect 并找到确切的故障点(不幸的是 http 库没有调试消息)、则会有所帮助。

    BTW http 客户端 源 文件在 SDK 中提供(在 source/ti/net/http 下)-如果您将相关文件添加到工程中、进行调试会更容易(您可能需要在工程属性中添加包含目录)。   

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

    主机名定义为 http://192.168.2.103
    我已经将来自 source/ti/net/http 的源文件添加到了我的项目中。
    我步入了 HttpClient_connect,但 SlNetUtil_gethostbyname ()返回了错误, 该错误是从 SlNetSock_connectURI ()调用的。

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

    我想它与作为 IP 地址(而不是 URL 名称)提供的主机名有关。

    请尝试 将其设置为"192.168.2.103"(即不带"http://")、您可以将断点设置为 sl_NetAppDnsGetHostByName 并确保名称和其他参数符合预期(名称应为不带任何前缀的"192.168.2.103")。  

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

    我从 IP 地址中删除了 http://,结果是相同的。 它返回-2006作为错误。
    我在调试器中检查了参数、它只有 IP 地址(不带前缀)。

    为了进行测试、我下载了 HttpGet 示例并且尝试通过前缀连接到 IP 地址。
    它运行没有任何问题。

    此错误代码是否与两个 API 的使用相关:sl_*和 slnet*?
    配置示例使用 sl_* API,当我集成 OTA_IF 时,它使用 slnet* API。

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

    我不确定。 不建议并行使用 SL 和 SlNet API、但我不知道这会如何导致您面临的问题。

    因此、您  使用 HTTPGET 示例中的相同参数调用了 sl_NetAppDnsGetHostByName、并 在 OTA_IF 中使用相同的 HttpClient API (即 HttpClient_connect)、但仍然一个成功、另一个失败、对吗?

    请验证所有参数(包括提供的 NameLen)是否相同。

    NWP 日志(请参阅 https://www.ti.com/lit/swru455中的第20章)可能有助于我们了解故障的确切原因。

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

    我创建了两个 NWP 日志:"HttpGet .log"和"Provisioning with ota_if.log"

    我调试了 HttpClient_connect 函数、但问题出在函数 SLNetIf_queryIf 中。
    它返回 NULL、因为 SLNetIf_listHead 为 NULL。

    以下是 HttpClient_connect 的函数序列:

    HttpClient_connect -> HttpClient_connect2 -> SlNetSock_connectURI -> SLNetUtil_gethostbyname -> SLNetIF_queryIf

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

    验证您是否正在初始化序列中调用 SlNetif_add()。

    如果在您的 syscfg 文件中定义了 SlNet,则需要通过 从主线程调用 ti_net_SlNet_initconfig ()来完成(请参见我们的示例- ti_net_SlNet_initconfig 是一个自动生成的代码)。

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

    好的、它现在可以工作了。
    问题是缺少 ti_net_SlNet_initconfig()。

    谢谢!

    此致

    Thomas