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:只有当"https"位于 HOSTNAME 中时,HttpClient_connect()才返回-2006。

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/980593/launchcc3220modasf-httpclient_connect-returns--2006-only-when-https-is-in-hostname

器件型号:LAUNCHCC3220MODASF
主题中讨论的其他器件:UNIFLASH

问题摘要:  

调用 HttpClient_connect()时出现-2006错误。   该函数在 HttpGet 的修改版本中工作正常(将其更改为 POST)、我们将重复使用该代码。  我们无法确定错误的原因。   

详细信息:

我们能够使用 TI 提供的 HttpGet 示例创建 HTTP POST 项目。  无论 HOSTNAME 变量中是否包含"http"或"https"、项目都可以正常运行并成功开机自检。  此外、我们可以在接收服务器端验证是否使用了适当的协议、 这与"http"或"https"是否添加 HOSTNAME 变量直接相关。   这一切都按预期工作

我们遇到的问题是、我们尝试将此代码移植到主项目中、现在似乎只有在使用 HTTP 时才成功。  如果我们尝试使用 HTTPS (通过在 hostname 变量中包含"https"), 函数 HttpClient_connect()将返回-2006,导致 POST 失败。  我们使用与上述工作示例完全相同的 HOSTNAME、但出于某种原因、我们收到了-2006错误。   

什么具体会导致该误差?  我们应该在哪里解决这个问题?  我们希望保留示例项目的动态特性、其中我们只需将 HOSTNAME 更改为包含"http"或"https"、而无需通过 uniflash 手动将证书文件上载到器件。    

我们希望避免在公共论坛中发布我们的代码、但如果您认为代码有助于解决此问题、我们可以私下发送该代码。   

谢谢你

Brenden

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

    您好、Brenden、

    错误-2006是 sl_RET_CODE_INVALID_INPUT、这意味着参数无效。 您能否验证客户端句柄和主机名? 如何配置安全属性对象?

    此致、

    Sarah

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

    您好、Sarah、  

    我是 Brendan 的同事之一、为他而进。

    相关代码行如下所示:

    #define HOSTNAME"https://master.someurl.com"
    const char header[]="Basic cm9kbmV5OnJvZG5leXJvZG5leQ=\r\nAccept:application/json\、text/plain\r\ncontent-Type:application/com.alertus-v1.0+json";
    
    HttpClient_handle;HttpClient_Handle=
    Http&Client_Intt
    ;HttpClient0
    
    RET = HttpClient_setHeader (httpClientHandle、
    HttpClient_HFIELD_REQ_authorization、
    标头、
    strlen (标头)+1、
    HttpClient_HFIELD_persistent);
    
    
    ret = HttpClient_connect (https://ClientHandle、HOSTNAME、0、0); 

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

    您好、Rodney、

    如果我理解正确、完全相同的 HOSTNAME 定义在您的 HttpGet 示例中有效、但在您的自定义应用程序中、HttpClient_connect 返回-2006。

    您能否将 source/ti/net/http/httpclient.c 添加到您的项目中并逐步查看错误的来源? 同时确保正在检查 CREATE 和 setHeader 的返回代码。

    此致、

    Sarah