【问题标题】:Does gSOAP RESTful implementation require the definition of a WSDLgSOAP RESTful 实现是否需要定义 WSDL
【发布时间】:2015-05-19 09:45:35
【问题描述】:

我查看了 gSOAP 中的示例,其余示例定义了 WSDL,然后为客户端和服务器应用程序生成代码。有没有办法在不定义 WSDL 的情况下使用 gSOAP 实现 RESTful 服务?

当我尝试编译下面的示例时,我收到以下错误

"/usr/local/lib/libgsoap++.a(libgsoap___a-stdsoap2_cpp.o):在函数soap_set_error': /home/mtwells/Downloads/gsoap-2.8/gsoap/stdsoap2_cpp.cpp:17314: undefined reference tosoap_faultcode'"

因为它正在寻找使用 wsdl2h 生成的代码。

1 #include "plugin/httpget.h"
2 
3
4 int main(int argc, char **argv)
5 {
6     struct soap *soap = soap_new();
7
8     soap_destroy(soap);
9     soap_end(soap);
10     soap_free(soap);
11     return 0;
12 }

https://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.38.2

【问题讨论】:

  • 你还包括什么?根据我使用 gSoap 的经验,您必须运行 wsdl2h。在 wsdl 上,然后在生成的文件上使用 stdsoap2 以包含/用户的文件
  • RESTful 风格不需要 WSDL。但是,gSOAP 的 REST 实现似乎需要 WSDL。 gSOAP 是否需要从 WSDL 生成的代码?
  • 所有 uv 用它做过的事情
  • 是否可以在没有 WSDL 的情况下使用 gSOAP RESTful 实现?
  • 如果您有 Web 服务,为什么没有 WSDL?不要以为没有一个就可以使用它

标签: c++ rest wsdl gsoap


【解决方案1】:

gSOAP soapcpp2 编译器还可以生成 WSDL 定义以从头开始实现服务,即“无需先定义 WSDL”。这“关闭了循环”,因为它允许直接从头文件中的一组操作 C/C++ 操作进行 Web 服务开发,而无需用户分析 Web 服务细节。

根据gSOAP手册1.2,gSOAP soapcpp2编译器可以仅根据头文件生成所需的客户端和服务器应用程序。这意味着然后您必须自己编写所有头文件并将其提供给 soapcpp2 编译器,它不仅会生成服务/客户端应用程序,还会为您生成缺少的 wsdl 文件,如果您将其包含在选项中!在这种情况下,您不需要 wsdl2h 工具。

问候

【讨论】:

  • 我不清楚为什么这被否决了?我们使用这种机制,我认为这是正确的答案。接口可以以非常类似于 C 的结构定义的形式定义,函数原型以这些结构作为参数。 soapcpp2 然后根据这个定义生成你需要的一切(其中包括一个 WSDL,尽管如果使用 REST 选项可以丢弃它)。
猜你喜欢
  • 2017-05-09
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多