C++ 的 Web 服务客户端库

发布于 2025-01-01 05:06:22 字数 640 浏览 0 评论 0原文

我想为 Windows 上的项目实现一个 Web 服务客户端。 我想获取网络服务信息、soap 请求和soap 响应。 我需要一个可用于这些目的的 C++ 库(不是 wsdlpull)。

要求

  • 应该是一个
  • 可用于访问任何 SOAP Web 服务的 C++ 库(因此我可以将 URL、Web 服务名称、Web 服务方法和所有参数作为参数传递给函数调用)
  • 可以查询 Web 服务的 WSDL 并返回可用的方法名称、方法的参数及其数据类型
  • 简单文档

更具体地说:库应该有像这样的简单调用来获取 Web 服务信息

invoker.getOperations(operations);

outputXml += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
outputXml += "<webService";
outputXml += " name=\"" + GetServiceName(&invoker) + "\"";
outputXml += ">\n";
outputXml += "\t<webMethods>\n";

谢谢。

I'd like to implement a web service client for a project on Windows.
I want to get web service info, soap request and soap response.
I need a C++ library that I can use for these purposes (not wsdlpull).

Requirements:

  • should be a C++ library
  • can be used to access any SOAP web service (so I can pass the URL, the web service name, the web service method and all the arguments as arguments to a function call)
  • can query the web service for its WSDL and return me the available method names, arguments of the methods and their data types
  • simple doucmentation

To be more specific: library should have simple calls like this for getting web service information

invoker.getOperations(operations);

outputXml += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
outputXml += "<webService";
outputXml += " name=\"" + GetServiceName(&invoker) + "\"";
outputXml += ">\n";
outputXml += "\t<webMethods>\n";

Thanks.

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

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

发布评论

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

评论(1

傲性难收 2025-01-08 05:06:22

C/C++ Web 服务的行业标准是 gsoap。 http://www.cs.fsu.edu/~engelen/soap.html

使用 wsdl2h 提供将 XML 模式映射到 C/C++。它有很好的文档和包中的大量示例。也可以在线找到该文档。您可以轻松地将代码移植到许多操作系统(Linux、Windows 等)中

通过 Web 服务添加到号码的简单示例(调用代码)

#include "soapH.h"
#include "calc.nsmap"
main()
{
   struct soap *soap = soap_new();
   double result;
   if (soap_call_ns__add(soap, 1.0, 2.0, &result) == SOAP_OK)
      printf("The sum of 1.0 and 2.0 is %lg\n", result);
   else
      soap_print_fault(soap, stderr);
   soap_end(soap);
   soap_free(soap);
}

使用 gsoap,您可以分两步完成这项工作

  1. 首先从 WSDL 创建存根(如 wsdl2java)
  2. 然后您使用您的对象调用存根

如果您想创建服务(充当服务器,而不仅仅是客户端代码),这也是一个优秀的框架

The industry standard for C/C++ web services is gsoap. http://www.cs.fsu.edu/~engelen/soap.html

Provides mapping XML Schema to C/C++ with wsdl2h. It has good documentation and a lot of samples in the package. Doc can be found also online. You can easily port your code in many OSs (linux, windows etc)

Simpe example to add to number via a web service (invocation code)

#include "soapH.h"
#include "calc.nsmap"
main()
{
   struct soap *soap = soap_new();
   double result;
   if (soap_call_ns__add(soap, 1.0, 2.0, &result) == SOAP_OK)
      printf("The sum of 1.0 and 2.0 is %lg\n", result);
   else
      soap_print_fault(soap, stderr);
   soap_end(soap);
   soap_free(soap);
}

With gsoap you do the job in two steps

  1. First create stubs (like wsdl2java) from the WSDL
  2. Then you call the stubs with your objects

Also excellent framework if you want to create your service (act as a server, not only client code)

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