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.

[参考译文] CC3200:HTTP 客户端演示- HTTP 消息标头字段的区分大小写比较

Guru**** 2551110 points
Other Parts Discussed in Thread: CC3200SDK, CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/713088/cc3200-http-client-demo--case-insensitive-compare-of-http-message-header-fields

器件型号:CC3200

我正在尝试 CC3200SDK_1.3.0中的"http_client_demo"示例。  在 httpcli.c libraray 中的"checkContentField()"例程中、它在 HPPTCli_field_name_transfer_encoding 和 HPPTCli_field_name_content_length 上执行 strcmp():

在 httpcli.h 中、这些字段名称定义为:

#define HTTPCli_field_name_transfer_encoding "Transfer-Encoding"
#define HTTPCli_field_name_content_type "内容类型"

在 RFC 2616第4.2节"消息标题"中、字段名称不区分大小写。 checkContentField()例程中的 strcmp()与定义的字段名称进行精确比较。  最好进行区分大小写的字符串比较。

我注意到、httpcli.c 文件中存在一个不区分大小写的字符串比较例程:

是否有方法可以使用 StringCompare()例程而不是 strcmp()例程,而不必重新生成 WebClient.a 库?

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

    是的、我相信您是正确的。 此更新针对我们的 CC3220 http 客户端库进行、但不针对 CC3200库进行。 对于这些比较,您应该能够使用 StringCompare()函数来代替 strcmp()。

    尝试仅将您需要更改的文件复制到 CCS 工程中(可能只有 httpcli.c)并进行更改。 如果您的项目仍链接到编译的 WebClient.a 库、则项目本身中的 httpcli.c 应替换库中的定义、这样您就不必重建整个库。

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

    您好 Ben、

    我对 httpcli.c 进行了更改、并将其放置在我的项目中。  当我构建它时、我收到了一组与未定义标识符(Task_handle、Task_Params、UArg, Task_FunctPtr)相关的错误。  在搜索论坛后、我看到了这篇与以下内容相关的文章:

    我在我的构建配置中添加了以下内容:

     1) 1)_OS__作为预定义符号

     2) 2) sl_platform_multi_threaded 作为预定义符号

     3) 3) CC3200SDK_1.3.0/cc3200-sdk/oslib 至我的 include 搜索路径

     4) 4)将 WebClient.A 库路径更改为 "CC3200SDK_1.3.0/CC3200-SDK/netapps/http/client/CCS/HTTPClientFullLib/"

    现在我收到以下错误:

    未定义   的首次引用

     符号       文件中   

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

    OSI_TaskCreate ./httpcli.obj  

    OSI_TaskDelete ./httpcli.obj  

    错误#10234-D:未解析的符号仍然存在

    错误#10010:链接期间遇到错误;未构建"http_client_demo.out"

    >>编译失败

    我应该添加其他库或设置吗?

    以下是我当前的库设置:

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

    我看到您已将 oslib 添加到搜索路径中、但您是否链接到实际的 oslib 库?

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

    您好 Ben、

    我在 free_rtos.a 库中进行了链接、并收到了一组不同的错误。  我附加了一个 word doc、其中显示了我的链接器配置的屏幕截图以及生成的构建错误消息。  (出于某种原因、我之前的回复中的图片未显示在发布的邮件中、即使在我创建邮件时它们显示在邮件中。  我希望这个单词 doc 能被传递!)

    e2e.ti.com/.../CC3200Http-Client-Demo_2D00_BuildErrors.docx

    谢谢、

    Toby  

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

    如果您不需要 HTTPClientFull 构建中包含的额外内容、我建议您继续使用 HTTPClientMin 配置。 现在、我将 httpcli.c 文件直接包含在 http_client_demo 项目中、了解您最初遇到错误的原因。 您需要将 HTTPCLientMinLib 配置的 WebClient 库中使用的预定义符号复制到 http_client_demo 项目、以便使用 https://cx.c 中的正确内容。 (__CCS__和 HTTPCli_LIBTYPE_MIN)

    否则、您可以将 WebClient 工程从 SDK (用于生成 http 客户端库)导入到 CCS 中、并使用更改直接重新编译。 我知道这不是您首选的方法、但它应该非常简单。

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

    感谢您澄清我的初始构建问题。  我采纳了您的第二个建议、并使用不区分大小写的字符串比较重建了 HTTPClientMin 库。  它现在正在工作、谢谢!