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.

[参考译文] CCS/CC3220S-LAUNCHXL:使用最新 Simplelink SDK 1.60.00.04 http 客户端库的 HTTP 和 https 客户端示例代码

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/663977/ccs-cc3220s-launchxl-http-and-https-client-sample-codes-utilizing-the-latest-simplelink-sdk-1-60-00-04-http-client-library

器件型号:CC3220S-LAUNCHXL
主题中讨论的其他器件:CC3220SUNIFLASHCC3220SF

工具/软件:Code Composer Studio

您好!

您能否提供 http 和 https 客户端示例代码以及或使用最新的 simplelink SDK 1.60.00.04 http 客户端库导入 CC3220 http 客户端示例代码的分步详细信息、以使其与 Code Composer Studio 7.4.0和 CC3220S launchpad 一同运行?

我已经关注了有关此 http 客户端演示代码的几个线程、甚至读取了对最新 v1.6.0 SDK 的响应、但没有明确的完整说明如何使用新库创建 http 客户端、然后从该 https 客户端创建。

此致、

Antolin

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

    尊敬的 Antolin:

    请尝试此示例。 请注意、这不是一个正式示例、下一个季度 SDK 版本中将发布一个正式示例。 这还将包括对 http 客户端库的更新、因此您需要根据官方发布的可用版本进行更新。

    此致、

    本·M

    HttpGet

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

    您好 Benjamin、

    感谢您的警告和另一个问题:我可以使用"portable + WIFI"示例步骤为您共享的 http 客户端文件创建 TI-RTOS 吗?

    安托林

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

    尊敬的 Antolin:

    实际上、请尝试使用此 platform.c 文件作为 Wi-Fi 处理程序和主线程的基础。 然后、只要在中添加必要的库、就应该能够将其仅基于可移植示例。

    此致、

    本·M  

    平台.c

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

    感谢指针、我们需要添加哪些库?

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

    它依赖于 slnetsock_release、slnetifwifi、httpclient 和 simplelink 库。 TI 驱动程序版本应该已经存在。 现在,您需要显示驱动程序,但可以将其调整为使用您喜欢的任何打印机制。

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

    您好 Ben、

    我尽可能地加入了路径、但最后我遇到了以下错误、可能只是我遗漏的一个简单问题、提前感谢  


    ****项目 portable_CC3220S_LAUNCHXL_tirtos_ccs 的配置调试构建****

    "C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 all -O

    '生成文件:"../HttpGE.c"
    '调用:ARM 编译器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="/source/ti/net/httpclient /Users/Antolin/workspace_v7/portable_CC3220S_LAUNCHXL_tirtos_ccs /Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt --include_path="/source/ti/drivers/net/wifi /ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/posix/ccs --include_path="/source/ti/drivers/net/wifi/slnetif --include_path="/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include --include_path="c_tpsecuration="cn_subsection=trad_subsection=trad_subsection=g_subsection=t32pf-nateg_core-board.come_display_cortategotrendature-board-trateg-trateg-core-board-core-board-tran.tp=g=g=trategateg-core-board-core-board-cortpecnation="pecnature=g.tran.come-board-cortpecnation="pecnation_sep-cortature-come.come.come.come.come.come.come.come.come.com/support/pecnation=
    '完成的建筑:"../HttpGE.c"

    '生成文件:"../CC3220S_LAUNCHXL.c"
    '调用:ARM 编译器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="/source/ti/net/httpclient --include_path="/source/ti/drivers/net/wifi /ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/posix/ccs --include_path="/source/ti/drivers/net/wifi/slnetif --include_path="/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include --include_path="c:/Users/Antolin/workspace_v7/portable_CC3220S_LAUNCHXL_tirtos_ccs /Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt --include_remote_display_subsections=c32xl --intrad_code.combuls=c32xl --ine_remote_display_cort32xl --ines=ctrad_warnatures=c32xrand_decnature-come-come-come-come-core-come-ine_remother_de=c32xrand_diag=c_diag=-ine-ine-ine-ine-ine-c32xrand_decon_cort32xrand_diag=-ine-ine-ine-ine-ine-ine-ine-ine-ctrap_cort32xrand_diag=ctrap_in
    '完成的建筑:"../CC3220S_LAUNCHXL.c"

    '生成文件:"../platform.c"
    '调用:ARM 编译器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="/source/ti/net/httpclient --include_path="/source/ti/drivers/net/wifi /ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/posix/ccs --include_path="/source/ti/drivers/net/wifi/slnetif --include_path="/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include --include_path="c:/Users/Antolin/workspace_v7/portable_CC3220S_LAUNCHXL_tirtos_ccs /Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt --include_path="c_tagender="c_defination="pinategrainature-board_code.combot_code.combag=ctran_code.combe.combe.combe.combe.comb_subs=-code.combe.combon_code.combe.combe.com/support/prob_prob_code.combe.comb_prob_code.comb_prob_probe.combe.comb_code.comb_prob_prob_probe.comb.c:
    '完成的建筑:"../platform.c"

    '构建目标:"portable_CC3220S_LAUNCHXL_tirtos_ccs.out"
    '调用:ARM 链接器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/lib /ti/simplelink_cc32xx_sdk_1_60_00_04/source -mv7M4 -code_state=16 --float_support=vfplib -me -define=c32XX -define=on板 载 TMP006 -g -code_warning=225 -diag_warning=255 -diag_warn=off -display_error_number -gen_func_tos_intrad_inese-tids"-tidccs_ram_ram_inu_ram_ram_inese-tidse-tids_-tidctrad_ram_inu_inese-tids"-tidctrad_ram_inu_ram_ram_ram_ram_ines-tids_-tics"-tids_-tids_-r32xr32x_ram_ram_ram_ram_ram_ram_ram_ram_ines-tos_ine_ines-/ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/drivers/net/wifi/ccs/rtos /ti/simplelink_cc32xx_sdk_1_60_00_04/kernel/tirtos/packages /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include -tid_ram_ram_ram_ram_ram_en_ine_ine_ines-tid_core-tos-tos-tos_/Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/linker.cmd

    未定义的首次引用
    符号
    ------ --------
    主 C:\ti\ccsv7\tools\compiler\ti-cgt-arm_16.9.7.LTS \lib\rtsv7M4_T_le_eabi.lib

    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接期间遇到错误;未构建"portable_CC3220S_LAUNCHXL_tirtos_ccs.out"

    >>编译失败
    Makefile:154:目标'portable_CC3220S_LAUNCHXL_tirtos_ccs.out'的配方失败
    gmaked[1]:***[portable_CC3220S_LAUNCHXL_tirtos_ccs.out]错误1.
    Makefile:147:目标“全部”的配方失败
    gmake:***[全部]错误2.

    ****构建完成****

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

    您好 Ben、

    我通过编辑和重新添加 main_tirtos.c 文件并引用 mainThread()(即从 platform.c 调用的 extern)来修复上述错误(注释掉不相关的线程:控制台和温度)

    但修复后、我在底部看到以下错误、请参阅最后一部分

    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================


    ****针对项目 portable_CC3220S_LAUNCHXL_tirtos_ccs 的纯净配置编译****

    "C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 clean -O

    DEL /F "portable_CC3220S_LAUNCHXL_tirtos_ccs.bin"便携型 CC3220S_LAUNCHXL_tirtos_ccs.out"
    del /F "CC3220S_LAUNCHXL.obj""HttpGE.obj""platform.obj"
    DEL /F "CC3220S_LAUNCHXL.d" HttpGE.d" platform.d"
    找不到 C:\Users\Antolin_workspace_v7\portable_CC3220S_LAUNCHXL_tirtos_ccs\Debug\portable_CC3220S_LAUNCHXL_tirtos_ccs.bin
    找不到 C:\Users\Antolin\workspace_v7\portable_CC3220S_LAUNCHXL_tirtos_ccs\Debug\CC3220S_LAUNCHXL.obj
    找不到 C:\Users\Antolin\workspace_v7\portable_CC3220S_LAUNCHXL_tirtos_ccs\Debug\CC3220S_LAUNCHXL.d
    '已完成清洁'

    ****构建完成****

    ****项目 portable_CC3220S_LAUNCHXL_tirtos_ccs 的配置调试构建****

    "C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 all -O

    '生成文件:"../HttpGE.c"
    '调用:ARM 编译器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="/source/ti/net/httpclient /Users/Antolin/workspace_v7/portable_CC3220S_LAUNCHXL_tirtos_ccs /Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt --include_path="/source/ti/drivers/net/wifi /ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/posix/ccs --include_path="/source/ti/drivers/net/wifi/slnetif --include_path="/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include --include_path="c_tpsecuration="cn_subsection=trad_subsection=trad_subsection=g_subsection=t32pf-nateg_core-board.come_display_cortategotrendature-board-trateg-trateg-core-board-core-board-tran.tp=g=g=trategateg-core-board-core-board-cortpecnation="pecnature=g.tran.come-board-cortpecnation="pecnation_sep-cortature-come.come.come.come.come.come.come.come.come.com/support/pecnation=
    '完成的建筑:"../HttpGE.c"

    '生成文件:"../CC3220S_LAUNCHXL.c"
    '调用:ARM 编译器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="/source/ti/net/httpclient --include_path="/source/ti/drivers/net/wifi /ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/posix/ccs --include_path="/source/ti/drivers/net/wifi/slnetif --include_path="/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include --include_path="c:/Users/Antolin/workspace_v7/portable_CC3220S_LAUNCHXL_tirtos_ccs /Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt --include_remote_display_subsections=c32xl --intrad_code.combuls=c32xl --ine_remote_display_cort32xl --ines=ctrad_warnatures=c32xrand_decnature-come-come-come-come-core-come-ine_remother_de=c32xrand_diag=c_diag=-ine-ine-ine-ine-ine-c32xrand_decon_cort32xrand_diag=-ine-ine-ine-ine-ine-ine-ine-ine-ctrap_cort32xrand_diag=ctrap_in
    '完成的建筑:"../CC3220S_LAUNCHXL.c"

    '生成文件:"../main_tirtos.c"'
    '调用:ARM 编译器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="/source/ti/net/httpclient /Users/Antolin/workspace_v7/portable_CC3220S_LAUNCHXL_tirtos_ccs /Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt --include_path="/source/ti/drivers/net/wifi /ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/posix/ccs --include_path="/source/ti/drivers/net/wifi/slnetif --include_path="/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include --include_path="c_tagram_subsections="c_tagram_subsections=tran_subs="-cortateg_code.come_remote_display_cortos=trates=trature-board-cortos-cortature=tos-cortature=tature=tateg-cortate-come-tature-come-come-combe-tos-cortos-cortos-cortate-tate-combe-combe-tos-cortos-cortos-cortos-tate-comport=tatnaten_decning_decning_decning_decnature-com
    '完成的建筑:"../main_tirtos.c"'

    '生成文件:"../platform.c"
    '调用:ARM 编译器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="/source/ti/net/httpclient --include_path="/source/ti/drivers/net/wifi /ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/posix/ccs --include_path="/source/ti/drivers/net/wifi/slnetif --include_path="/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include --include_path="c:/Users/Antolin/workspace_v7/portable_CC3220S_LAUNCHXL_tirtos_ccs /Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt --include_path="c_tagender="c_defination="pinategrainature-board_code.combot_code.combag=ctran_code.combe.combe.combe.combe.comb_subs=-code.combe.combon_code.combe.combe.com/support/prob_prob_code.combe.comb_prob_code.comb_prob_probe.combe.comb_code.comb_prob_prob_probe.comb.c:
    '完成的建筑:"../platform.c"

    '构建目标:"portable_CC3220S_LAUNCHXL_tirtos_ccs.out"
    '调用:ARM 链接器'
    "c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/bin/armcl /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/lib /ti/simplelink_cc32xx_sdk_1_60_00_04/source -mv7M4 -code_state=16 --float_support=vfplib -me -define=c32XX -define=on板 载 TMP006 -g -code_warning=225 -diag_warning=255 -diag_warn=off -display_error_number -gen_func_tos_intrad_inese-tids"-tidccs_ram_ram_inu_ram_ram_inese-tidse-tids_-tidctrad_ram_inu_inese-tids"-tidctrad_ram_inu_ram_ram_ram_ram_ines-tids_-tics"-tids_-tids_-r32xr32x_ram_ram_ram_ram_ram_ram_ram_ram_ines-tos_ine_ines-/ti/simplelink_cc32xx_sdk_1_60_00_04/source/ti/drivers/net/wifi/ccs/rtos /ti/simplelink_cc32xx_sdk_1_60_00_04/kernel/tirtos/packages /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.7.LTS/include -tid_ram_ram_ram_ram_ram_en_ine_ine_ines-tid_core-tos-tos-tos_/Users/Antolin/workspace_v7/tirtos_builds_CC3220S_LAUNCHXL_release_ccs/Debug/configPkg/linker.cmd

    未定义的首次引用
    符号
    ------ --------
    HttpClient_connect ./HttpGE.obj
    HttpClient_create ./HttpGE.obj
    HttpClient_destroy ./HttpGE.obj
    HttpClient_disconnect ./HttpGE.obj
    HttpClient_readResponseBody ./HttpGE.obj
    HttpClient_sendRequest ./HttpGE.obj
    HttpClient_setHeader ./HttpGE.obj
    http_method_get ./HttpGE.obj
    slNetIfConfigWifi ./platform.obj
    slNetIf 添加./platform.obj
    slNetIf 初始化./platform.obj
    slNetSock_init ./platform.obj
    slNetUtil_init ./platform.obj

    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接期间遇到错误;未构建"portable_CC3220S_LAUNCHXL_tirtos_ccs.out"

    >>编译失败
    Makefile:155:目标'portable_CC3220S_LAUNCHXL_tirtos_ccs.out'的配方失败
    gmaked[1]:***[portable_CC3220S_LAUNCHXL_tirtos_ccs.out]错误1.
    Makefile:148:目标'all'的配方失败
    gmake:***[全部]错误2.

    ****构建完成****

    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

    此致、

    Antolin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我在添加库后发布了最新的链接器相关错误、请查看底部的最新错误发布
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Adnotlin、

    看起来您仍然缺少链接器设置中的一些库。 检查以确保这些内容包含在 Properties->Build->ARM Linker->File Search Path:

    * httpclient.a (来自 sources/ti/net/httpclient/CCS/发布)

    * slnetsock_release.a (来自 source/ti/net/lib/ccs/M4)

    * slnetifwifi。a (来自 source/ti/drivers/net/wifi/slnetiftif/Ccs/发行版)

    请参阅下面的屏幕截图(请注意、在屏幕截图中、路径在库搜索路径和库文件之间拆分):

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

    您好 Ben、

     感谢您提供的上述附加信息、以及如何更改您提供的 C 文件以确定目标并用作基本 https 客户端?  

    安托林

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

    我不确定我是否理解这个问题。 请确认上面的示例正在正确运行(即获取操作成功、数据打印到控制台)。

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

    您好 Ben、

    如何从 Display_printf()函数中看到打印结果?  

    我尝试打开多个 CCS 控制台、但看不到任何输出消息?

    安托林

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

    这应该像 UART_PRINT 一样通过 UART 打印到串行终端。

    此致、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Ben、
    我将 Putty 连接到 COM4、Launchpad 出现在该 COM4上、在115kbaud 8位无奇偶校验的情况下、基本 http 客户端从 httpbin.org 获取响应

    我的下一个问题是:

    如何启用 https 客户端连接? --一个使用 https://但没有证书的基本文件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Antolin:

    您应该能够通过执行以下操作来启用 HTTPS:

    1.将 HOSTNAME 更改为使用 https 的内容,例如:

    2.创建 HttpClient_extSecParams 的实例,例如:

    HttpClient_extSecParams httpClientSecParams; 

    3.您应验证服务器,因此应将 HttpClient_extSecParams 的 RootCA 元素设置为设备文件系统上根 CA 的文件名,并确保未使用的字段(clientCert/privateKey)设置为 NULL,例如:

    httpClientSecParams.RootCA ="ca.der";
    httpClientSecParams.clientCert = NULL;
    https://Params.privateKey = NULL; 

    5.更新 HttpClient_connect()调用以使用安全参数,例如:

    HttpClient_connect (httpClientHandle、HOSTNAME、&httpClientSecParams、0); 


    请注意、这要求您使用 UniFlash 等工具将服务器根 CA 编程到文件系统。 在本示例中、添加的文件名为"ca.der"。


    此致、

    本·M

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

    您好 Ben、

    我对证书文件还有进一步的疑问、如果您能提供建议、我们将不胜感激

    1) 1)证书文件是否需要保存到特定文件夹中?
    2) 2)如果我需要将证书归档到文件夹中、是否将文件名与路径放在一起、
    例如,我将文件保存在文件夹 serverA 中,我应该按如下方式保存文件名?

    httpClientSecParams.RootCA ="serverA/ca.der";

    3) 3)如果我成功分配了 RootCA 的文件名、 SlNetSock 库是否会直接从文件系统加载证书?

    4) 4)在 UniFlash 旁边、是否支持使用 FS 库创建证书文件?
    我在去 ubg 模式下使用 ccs7与 FS 库、它能够在调试期间打开、读取和下载文件。 但是、我无法使用 UniFlash 查看创建的文件。 退出调试模式后、文件似乎被删除。

    谢谢

    Nick

    Nicky

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

    1)否、证书文件不需要位于特定文件夹中。 您可以将其放在您选择的文件夹中。
    2)是的、将文件夹名称添加到文件名中。 但是、您希望它看起来像这个"/serverA/ca.der "。
    3)是的、netsock 库将调用 SimpleLink Wi-Fi API、以将该文件名分配为套接字的 CA 文件(底层调用为 sl_SetSockOpt ())。 然后,当尝试连接时,网络处理器将根据给定的文件名访问该文件,以验证服务器证书链。
    4)是的、您也可以使用文件系统(FS)命令使用应用程序编写文件。 这就是文件在系统上随着时间的推移而更新的方式。 如果以这种方式创建文件、则应能够通过 UniFlash 访问文件、方法是连接到器件并选择"User File Browser"。 显示文件系统后、您可以使用"Get File"选项保存文件。 但是、这要求系统处于开发模式、因为作为一种安全措施、文件系统的访问被锁定在生产模式中。 对于安全文件、您必须提供必要的令牌才能读取它并将其保存到您的计算机上。

    此致、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另请注意、在使用安全套接字(即 HTTPS 客户端)时、应将设备时间设置为当前日期。 验证服务器证书的有效性需要时间。

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

    感谢您的回复

    问题4)
    我基于网络终端 trrtos 版本测试了文件系统。 使用 UniFlash 时、我只能找到网络终端项目的默认文件、例如 cert、.bin。

    当我使用 sl_FsGetFileList()时,我可以从列表中看到新创建的文件。

    此致

    Nicky

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

    您好 Benjamin、

          我已经尝试 过您提供的此 HttpGet 代码,它运行正常。  我还想将数据从 CC3220SF 发布到服务器。

          我正在设置 http 标头- “Content-type =“application/json”。 但是我收到错误- 400 -错误请求。

          请告诉我必须对 HttpGet 代码进行哪些更改才能发布数据以及 我所需的信息。

    此致、

    Omkar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ben、
    以下是几个问题:
    您指定的代码更改将修改的 http 客户端编译到 https 客户端时不会出错
    但是
    它未连接 到 https://httpbin.org

    如何使用 cc3220s launchpad 中已存在的默认 dummy-ca-cert.der 文件?

    我是否需要生成您提到的 ca.der 文件? 如何做到这一点,您是否有链接显示如何将其放入 cc3220s?

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

    你好、Nicky、

    由于此问题与 http 客户端库无关、您能否打开一个新主题以进行讨论? 我们将查找新帖子并确保其得到解答。

    谢谢、

    本·M

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

    尊敬的 Antolin:

    请参阅 CC3220网络处理器编程器指南中的表6-2、了解从客户端设备角度对根 CA 文件的说明-

    http://www.ti.com/lit/ug/swru455d/swru455d.pdf

    这将是对等方的根 CA 证书。 虚拟 CA 文件将不起作用,因为它是一个示例文件,而不是一个实际的 CA。 您不需要生成 CA 文件。 您需要找到 httpbin.org 使用的文件、下载该文件并使用 UniFlash Image Creator 将其编程到 CC3220文件系统中。 以下是有关如何使用 UniFlash ImageCreator 将用户文件添加到文件系统的指南:

    http://www.ti.com/lit/ug/swru469a/swru469a.pdf

    有多种工具可用于获取根 Ca、其中一个示例介绍了如何实现这一点、即 ssltools.com。 但是、最佳做法是尝试连接并检查 通过异步套接字事件处理程序返回的 sl_SSL_notification_wrong_root_CA 案例的通用名称。

    此致、

    本·M

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

    在执行这些步骤后、我会收到以下错误:

    连接到:Avova Private。

    发送 HTTP GET 请求至'https://httpbin.org'

    错误! 代码=-456、desc = httpTask:连接失败


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

    尊敬的 Antolin:

    错误-456表示连接期间使用的 CA 文件损坏。 可能是因为在将文件编程到闪存时指定的名称与套接字中指示的名称不匹配、或者文件不是有效的 PEM/DER 文件、或者最后是因为它是错误的根 CA 文件。

    请参阅《CC3220网络处理器编程人员指南》的第6.7.2节-

    http://www.ti.com/lit/ug/swru455e/swru455e.pdf

    此致、

    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ben、
    也许我需要从对等设备(即 httpbin.org 服务器)复制.der 和.pem 吗?

    以下是与步骤相关的代码片段,我已将.der 文件复制到用户区域中:

    /*
    *==== HttpGet .c ====
    * HTTP 客户端获取示例应用
    *

    /* BSD 支持*/
    #include "string.h"
    #include
    #include
    #include "semaphore.h"


    #define HOSTNAME" https://httpbin.org"
    #define REQUEST_URI "/get"
    #define USER_AGENT "HttpClient (ARM;TI-RTOS)"

    extern Display_Handle 显示;
    extern SEM_t ipEventSyncObj;
    extern void printError (char *errString,int 代码);

    /*
    *==== httpTask ====
    *发出 HTTP GET 请求
    *
    void* httpTask (void* pvParameters)

    bool MoreDataFlag = false;
    字符数据[256];
    int16_t ret = 0;
    int16_t len = 0;
    SEM_WAIT (&ipEventSyncObj);
    display_printf (display、0、0、"向'%s'发送 HTTPS GET 请求\n"、
    主机名);

    HttpClient_handle httpClientHandle;
    int16_t statusCode;

    // https 启用
    HttpClient_extSecParams httpClientSecParams;

    httpClientSecParams.RootCA ="dst-root-ca-x3.der";//"dummy-ca-cert.der";
    httpClientSecParams.clientCert =空;
    httpClientSecParams.privateKey =空;

    httpClientHandle = HttpClient_create (&statusCode、0);
    if (statusCode < 0)

    printError ("httpTask:创建 http 客户端句柄失败"、ret);


    RET = HttpClient_setHeader (httpClientHandle、HttpClient_HFIELD_REQ_USER_AGENT、USER_AGENT、strlen (USER_AGENT)、HttpClient_HFIELD_PERSISTENT);
    如果(ret < 0){
    printError ("httpTask:设置请求标头失败"、ret);


    //ret = HttpClient_connect (https://ClientHandle、HOSTNAME、0、0);
    // https 启用
    //更新 HttpClient_connect()调用以使用安全参数
    RET = HttpClient_connect (httpClientHandle、HOSTNAME、&httpClientSecParams、0);
    如果(ret < 0){
    printError ("httpTask: connect failed"、ret);

    RET = HttpClient_sendRequest (httpClientHandle、HTTP_METHOD_Get、Request_URI、NULL、0、0);
    如果(ret < 0){
    printError ("httpTask: send failed"、ret);


    if (ret!= HTTP_SC_OK){
    printError ("httpTask:无法获取状态"、ret);


    display_printf (display、0、0、"HTTP 响应状态代码:%d\n"、ret);

    Len = 0;
    执行{
    RET = HttpClient_readResponseBody (httpClientHandle、data、sizeof (data)、&MoreDataFlag);
    如果(ret < 0){
    printError ("httpTask:Response body processing failed"、ret);

    display_printf (display、0、0、"%.*s \r\n"、ret、data);
    len += ret;
    } while (MoreDataFlag);

    display_printf (display、0、0、"接收到的有效载荷%d 字节\n"、len);

    RET = HttpClient_ddisconnect (httpClientHandle);
    如果(RET < 0)

    printError ("httpTask:断开连接失败"、ret);


    HttpClient_Destroy (httpClientHandle);
    返回(0);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否有一个.der 和.pem 文件、您可以与已知良好的 https 网站共享以进行测试?

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

    尊敬的 Antolin:

    我从 ssltools.com 提取的 httpbin.org 文件似乎可以正常工作。 这不是获取所有根证书的保证方法、但在这种情况下看起来很好。 同样、默认 http://www.example.com/ 可与 https 一起使用、您应该能够以相同的方式找到它的根。

    最棒的
    本·M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ben、
    我仍然会得到与我提到的相同误差
    我将 URL 更改为 :https://www.example.com 、然后使用 ssltools.com 作为.der 下载证书、并将其指定为"ca.der"文件。
    我使用 uniflash 将 ca.der 文件保存在"/"下、然后单击"add"

    我是否需要指定此文件的路径?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Antolin:

    这些步骤是正确的。 您无需在指定的文件路径中添加任何其他内容。 请确保您还使用 sl_DeviceSet()将器件时间设置为当前日期和时间。

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

    是否需要在 HttpClient_setHeader()函数之前调用 sl_DeviceSet()?
    它是否具有需要设置的特定参数?
    返回的任何需要保存的值? 分配给其他一些函数?

    此致、
    安托林
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只要在网络处理器启动后和 HttpClient_connect()调用之前调用它,它就可以正常运行。
    有一个使用它在 doxygen 中设置器件时间的示例。 打开 /docs/wifi_host_driver_api/index.html 并查看 Modules (模块)-> Device (设备)->SL_DeviceSet (SL_DeviceSet)。

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

    我将代码放在 platform.c 文件中、代码片段如下所示:
    void mainThread (void *pv 参数)

    内部32_t 状态= 0;
    pthread_attr_t pAttrs_spawn;
    pthread_attr_t pAttrs;
    struct sched_param primParam;
    内部32_t 模式;
    内部16_t RET;

    slDateTime_t DateTime={0};
    DateTimeTM_Day =(_u32) 7; //月中某天(DD 格式)范围1-31
    DateTimeTM_mon =(_u32) 3; //月(mm 格式),范围为1-12
    DateTimeTM_year =(_u32) 2018; //年(YYYY 格式)
    DateTimeTM_Hour =(_u32) 18; //在0-23范围内的小时数
    DateTimeTM_min =(_u32) 6; //分钟范围为0-59
    DateTimeTM_sec =(_u32) 22; //秒,范围为0-59

    SL_DeviceSet (SL_DEVICE_General、
    SL_DEVICE_General_DATE_TIME、
    sizeof (slDateTim_t)、
    (_u8 *)(&DateTime));

    spi_init();
    (笑声)

    但是、现在我收到一个错误、提示:

    连接到:Avova Private。

    发送 HTTPS GET 请求至'https://httpbin.org'

    错误! 代码=-2050,desc =连接失败,错误代码:%d


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

    尊敬的 Antolin:

    您可以在 simplelink 主机驱动程序的"errors.h"文件中找到错误代码( /source/ti/drivers/net/wifi/errors.h)。 错误(-2050)表示设备处于错误的角色、可能是角色被另一个应用程序更改、而不是设置回工作站。  

    为了消除此问题、您可以添加代码以确保器件在运行其余演示之前处于工作站角色。 例如:

    内部32_t RET =-1;
    int32_t MODE =-1;
    
    /*如果器件未处于 STA 模式、请尝试将其配置为 STA 模式
    如果器件已经启动(获取 sl_RET_CODE_DEV_END_Started 错误代码)、则模式将保持-1、在这种情况下、我们不知道该角色。 无论如何移动到 STA 角色*/
    if (Role_STA != mode)
    {
    /*切换到 STA 角色并重新启动*/
    ret = SL_WlanSetMode (Role_STA);
    
    ret = SL_Stop (100);
    
    ret = SL_Start (0、0、0);
    
    /*检查器件是否再次处于 STA 中*/
    if (Role_STA != ret)
    {
    printError ("无法在 STA 角色中设置设备,%d",ret);
    }
    

    此致、
    本·M

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

    我收到以下错误:

    错误! 代码= 2、desc =未能将器件设置为 STA 角色、%d
    在 connect()函数中的 platform.c 中输入上述代码行后。

    请您发布并发送一份您的工作代码副本、感谢您的参与、因为我们已经没有时间了、我们需要 https 客户端正常工作。
    请包括对 platform.c 和 HttpGE.c 所做的更改、这些更改使其适合您、谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Antolin:

    此修复程序应简单到在调用前一帖子中显示的代码之前确保器件已启动(sl_Start (0、0、0))。

    错误中打印的代码2表示器件仍处于 AP 模式。 将设备设置为工作站模式的调用很可能会失败、因为在运行该命令之前未启动网络处理器。

    要验证是否出现此问题,请检查 sl_WlanSetMode()和 sl_Stop()调用的返回代码。 如果出现问题、他们将返回一条错误消息、指出器件未启动。

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

    您好 Ben、

    更正上述内容后、我将收到新错误:

    连接到:Avova Private。

    发送 HTTPS GET 请求至'https://httpbin.org'

    错误! 代码=-380、desc = httpTask:连接失败

    更正后的 platform.c 中的代码更改如下(恰好在创建 httpTask 线程的位置之后):

     status = pthread_create (&httpThread、&pAttrs、httpTask、NULL);
     if (状态)
     {
      printError("任务创建失败,错误代码:%d \r\n",状态);
     }
     /*初始化设备*/
     MODE = SL_Start (0、0、0);
     如果(模式< 0)
     {
      printError ("sl_start failed、error code:%d \r\n"、status);
     }

     /*如果器件未处于 STA 模式、请尝试将其配置为 STA 模式
     如果器  件已经启动(获取 sl_RET_CODE_DEV_END_Started 错误代码)、则模式将保持-1、在这种情况下、我们不知道该角色。 无论如何都改为 STA 角色*/

     if (Role_STA!=模式)
     {
      /*切换到 STA 角色并重新启动*/
      RET = SL_WlanSetMode (Role_STA);

      RET = SL_Stop (100);

      RET = SL_Start (0、0、0);

      /*检查器件是否再次处于 STA 中*/
      if (Role_STA!= RET)
      {
       printError ("无法在 STA 角色中设置设备、%d "、ret);
      }
     }

     connect();

    有什么想法吗?  您认为还有什么缺失?  


    安托林

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

    尊敬的 Antolin:

    您有用于配置角色并连接到本地网络的代码的地方应该没有问题、因为在器件获取 IP 地址之前、httpTask 将在信标上挂起、但我的做法是在创建 httpTask 之前拥有该地址。

    附件是我最新的 platform.c 和 HttpGE.c,供您参考(请注意,并非所有配置都需要在 ConfigureSimpleLinkToDefaultState()中)。

    您是否在公司网络上进行测试?

    此致、

    本·M

    平台.c

    HttpGet

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

    您好 Ben、

    感谢您提供这些文件、我将尝试使用它们。

    是的,我在公司网络中进行测试(我在普通 http 客户端中的上一个 platform.c 中输入了密码,并且它已连接-已验证连接)。

    此致、

    Antolin

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

    您好 Ben、

    谢谢、代码起作用!

    我想补充一点、用户必须点击"Connect"连接到 cc3220s/SF launchpad、并且必须使用右侧的"User file folder"、这就是 ca.der 文件必须保存到的位置、[否则、如果您使用左侧的文件、 看不到]

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

    你(们)好

    从 https 服务器获取数据时、我还收到错误的请求错误

    我已对代码进行了延迟处理、并且在 首次创建和连接时证书名称已成功移植到 httpclient_handle。 然后我调用 sendrequest、它将再次自动连接到服务器。我发现 sec 值发生了变化。

    请查看您是否对此问题有 Idra

    此致

    Nicky

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

    你好、Nicky、

    请确认您正在使用的服务器以及是否正在执行默认 GET 请求。 另请分享您如何看到"自动连接"到服务器、并更改了安全值。

    谢谢、

    本·M