【问题标题】:How to call a Rest Service in C++?如何在 C++ 中调用 Rest 服务?
【发布时间】:2011-11-24 14:31:02
【问题描述】:

我想从我的 C++ 应用程序中调用一个用 WCF(它可以支持 XML 和 JSON Web 消息格式)编写的休息服务。

实现这一目标的最佳解决方案是什么?我见过一些实用程序 (gsoap),它们为您创建用于调用 Web 服务的代理类。

我可以在不使用任何中间工具的情况下实现相同的功能吗?作为一项休息服务,它使用作为基本 HTTP 函数的 GET/PUT 函数工作,是否有任何 C++ 库/解决方案可用于直接从 C++ 应用程序调用这些函数?

【问题讨论】:

    标签: c++ wcf web-services rest


    【解决方案1】:

    在 Linux 上,您可能可以使用 curl 库(我猜它已移植到 Windows)。 Curl 是一个为 C 或 C++ 程序提供 HTTP 客户端功能的库。

    【讨论】:

    • 这对我来说听起来很明智 - CURL 是一个非常强大的 HTTP 编程库。
    【解决方案2】:

    使用Casablanca。这对于在 2013 年寻找这个答案的人应该会有所帮助。CURL 非常合适,但如果你在 Windows 中使用 C++ 并使用 MS 的东西,Casablanca 似乎很合适。

    【讨论】:

    • Casablanca 似乎不适用于 C++,而仅适用于 C++.NET
    • 没有。它还支持 macOS、iOS、Linux 和 Android。 github.com/Microsoft/cpprestsdk/wiki
    • 它适用于 C++,我只是通过示例,没有任何问题。 VS2017
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      我自己尝试了 gsoap,但维护我的应用程序的跨平台版本变得很困难。 相反,我选择了 HTTP 请求路由。 对于跨平台和 C++,我发现了这个 Call Rest Web Services from C++

      【讨论】:

        【解决方案5】:

        如果您的 REST 方法确实不需要 XML 序列化,那么 curl 非常适合使用。但是,如果您想在 C 或 C++ 中进行类型安全的 XML 序列化,那么使用 curl 会变得很麻烦,因为您必须使用在 curl 之上运行的东西来处理 XML,例如使用 DOM 解析器(缓慢且不键入安全的)。如果您有 WSDL,那么我推荐 gSOAP 2.8,它提供了集成的 REST 和 XML 序列化功能(以及您需要的 JSON)。

        【讨论】:

          猜你喜欢
          • 2016-01-08
          • 2020-02-08
          • 2016-02-13
          • 2013-07-08
          • 1970-01-01
          • 1970-01-01
          • 2013-12-03
          • 2013-10-31
          • 1970-01-01
          相关资源
          最近更新 更多