2011-11-24 215 views
2

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

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

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

回答

3

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

+0

这听起来很明智 - CURL是一个非常强大的HTTP编程库。 – Dave

0

使用Casablanca。这对于在2013年寻找这个答案的人应该是有帮助的。CURL非常合适,但是如果你在Windows中使用C++并使用MS,那么卡萨布兰卡似乎很合适。

+0

卡萨布兰卡似乎不适用于C++,但仅适用于C++。NET – jstuardo

+0

不。它还支持macOS,iOS,Linux和Android。 https://github.com/Microsoft/cpprestsdk/wiki – Dalinaum

1

我尝试gsoap自己,但它很难保持我的应用程序的跨平台版本。 相反,我去了HTTP请求路由。 对于跨平台和C++我发现这Call Rest Web Services from C++

0

如果真的不需要使用REST方法进行XML序列化,那么使用curl是完美的。但是,如果您希望在C或C++中使用类型安全的XML序列化,那么使用curl会变得很麻烦,因为您将不得不使用curl之上运行的某些内容来处理XML,比如使用DOM解析器(缓慢而不是类型)安全)。如果你有一个WSDL,那么我推荐gSOAP 2.8,它提供了集成的REST和XML序列化功能(当你需要时可以使用JSON)。