使用 gSOAP 独立服务器发布 wsdl?

发布于 2025-01-06 13:13:14 字数 180 浏览 0 评论 0原文

现在,我在 8080 端口上开发了一个 gSOAP 独立服务器,它适用于 SOAP RPC。

但是当客户端请求在 8080 端口上获取 wsdl 时,我想返回文件系统中 wsdl 文件的 wsdl 内容。

我该怎么做才能将 wsdl 返回给客户?

Now, I developed a gSOAP stand-alone server on 8080 port and it's working for SOAP RPC.

But I want to return wsdl content of a wsdl file in my file system when clients request for getting wsdl on the 8080 port.

what I can do to return wsdl to clients?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

往事风中埋 2025-01-13 13:13:14

我使用 xd 工具生成 wsdl 的嵌入版本,并使用此命令行将其存储为 wsdl.h 文件(我在 CMakeList.txt 中执行此操作):

${GSOAP_ROOT_DIR}/bin/win32/xd -dwsdl ${CMAKE_CURRENT_BINARY_DIR}/${SOAP_NAME_SERVICE}.wsdl > ${CMAKE_CURRENT_BINARY_DIR}/wsdl.h

之后,我实现了此功能,可以更好地在 GET 请求中使用参数引导:

int http_get(struct soap *soap)
{
  soap_response(soap, SOAP_HTML); // HTTP response header with text/html
  soap_send(soap, (const char*)wsdl);
  soap_end_send(soap);
  return SOAP_OK;
}

因此,我将此函数配置为使用 gSoap 接收到的所有 GET 命令引导:

.
.
.
struct soap soap;
soap_init(&soap);
soap.fget = http_get;
.
.
.

然后,当您的服务器收到 HTTP/GET 请求时,将调用您的函数并发送 wsdl 文件。如果您愿意,您可以在运行时读取 WSDL 文件并发送soap_send(),而不是像我一样将 WSDL 嵌入到您的代码中。

I used xd tool to generate a embbed version of my wsdl and store it a wsdl.h file with this command line (I`m doing this in my CMakeList.txt):

${GSOAP_ROOT_DIR}/bin/win32/xd -dwsdl ${CMAKE_CURRENT_BINARY_DIR}/${SOAP_NAME_SERVICE}.wsdl > ${CMAKE_CURRENT_BINARY_DIR}/wsdl.h

After that, I implemented this function, that can be better to lead with parameters in GET request:

int http_get(struct soap *soap)
{
  soap_response(soap, SOAP_HTML); // HTTP response header with text/html
  soap_send(soap, (const char*)wsdl);
  soap_end_send(soap);
  return SOAP_OK;
}

So, I configure this function to lead with all GET commands received by gSoap:

.
.
.
struct soap soap;
soap_init(&soap);
soap.fget = http_get;
.
.
.

Then, when your server receive a HTTP/GET request, your function will be called and send the wsdl file. If you want, you can read WSDL file at runtime and send in soap_send() instead to embbed WSDL in your code like I did.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文