问题标签 [gsoap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2767 浏览

java - C++ 中的 Gsoap 错误

我正在使用 gsoap 在 C++ 中创建一个肥皂服务器。消息通过用 Java 编写的总线进行路由。服务器和总线都是多线程的。一切正常,一次通过系统发送一条消息。如果我启动 3 个客户端,每个客户端都尽可能快地发送消息,那么对于大约 3500 条消息来说一切都很好。然后我开始定期收到“一次只允许一个套接字连接”。gsoap 代码中的错误。典型的 4000 条消息中约有 3950 条通过 OK。在最后 500 次发送中发生所有 50 次失败。

  1. 为什么这些错误会在多次发送后出现,而不是在发送开始时出现?发送速率不会增加。

  2. 它在说什么?我找不到该错误的任何解释,我也不清楚它的含义。

  3. 有人成功地多线程了一个 gsoap 应用程序吗?

这是我的服务器代码。

0 投票
1 回答
2830 浏览

c++ - 覆盖 gSOAP 中的命名空间

我将gSOAP其用作 Web 服务工具包,并且一次通过soapcpp2多个WSDLs 生成了存根和代理类。因此,所有命名空间绑定都在一个.nsmap文件中。

现在的问题是所有命名空间绑定都与我进行的所有方法调用一起发送。HTTP POST数据包异常大且丑陋。

有没有办法以编程方式覆盖命名空间绑定?

0 投票
6 回答
11466 浏览

soap - WSDL 最佳实践

我正在开发一个与第 3 方集成的 SOAP 应用程序。我觉得这个第三方的 WSDL 很奇怪。我对 SOAP 很陌生,所以如果它没有损坏,我不想去要求他们修复它。以下是我注意到的一些我认为错误的事情,尽管我确信它在技术上是一个有效的文档(因此我在标题中写了“最佳实践”)。另外,我使用 gSOAP 作为我的 SOAP 库,这可能就是为什么我认为其中一些东西很奇怪(我对 gSOAP 的了解甚至比对 SOAP 的了解还要新)。

  1. 它们在同一个 WSDL 中为 SOAP 1.1 和 SOAP 1.2 指定了接口。这会导致 gSOAP 生成两倍于它需要的类,因为我只打算使用 1.2。

  2. 他们所有的命名空间都是http://tempuri.org. 那不应该是这样的,对吧?

  3. 尽管定义了一堆 RPC 调用,但它们的 WSDL 使用文档格式。我正在考虑要求他们切换到 RPC 格式,因为 gSOAP 似乎不会生成将 C++ 类型参数用于文档格式的方法。相反,它为每个 API 函数的输入和响应数据创建一个新类。如果我不能解决这个问题,我将不得不编写另一层包裹 gSOAP 的东西,以便为我的应用程序的其余部分提供合理的 API。此外,AFAICT,如果他们切换到 RPC,将来回传输的 XML 将与现在完全相同,所以我认为这并不困难。

  4. 元素具有 minOccurs = 0 但是当我在没有它们的情况下提交请求时,我得到返回的错误表明它们是必需的(有时甚至是空指针异常的堆栈跟踪)。如果需要,他们应该将它们指定为 minOccurs = 1,对吗?

  5. 几乎所有的 Web 服务函数都指定了一个响应,其中包括一个表示成功的整数(实际上是一个布尔值)和一个错误消息字符串。他们应该为此使用 SOAP 错误吗?我认为如果它是一个错误,我的应用程序会更容易处理,因为 gSOAP 会让我很容易地解决这个问题(并简单地打印错误消息)。

当然,我不希望这家第 3 方公司仅仅因为我要求他们就改变他们的 WSDL。至少我会学到一些东西……据我所知,这些都不是错误的,甚至没有问题。谢谢你的帮助。

0 投票
3 回答
2173 浏览

objective-c - 是否有用于 gSOAP 的 Objective-C 包装器?

我将在我的 Mac 项目中使用 gSOAP 与 WCF Web 服务进行交互。它几乎完全符合我的需要并且做得很好(与 WSMakeStubs 完全相反;))。唯一的缺点是它只是 C/C++,这意味着我要么需要将我的所有类型即时转换为 C 类型,要么编写一个完整的包装解决方案来为我做这件事。

我宁愿不在这里重新发明轮子,而且我显然不是唯一 一个想要这样做的人,但到目前为止,我还没有找到任何人实际上已经发布了任何代码。

有没有人知道任何可用的代码可以让我不必自己编写整个事情?

0 投票
5 回答
13307 浏览

open-source - 在商业产品中使用 gSOAP 需要什么许可证?

我想在将要进行商业分发的产品中使用 gSOAP。我想到的用途是我怀疑是一个非常典型的工作流程——使用 wsdl2h 生成标头,使用 soapcpp2 使用标头,然后在我的代码中调用存根中生成的函数。

我不能 100% 确定我需要使用哪个许可证才能做到这一点。这里有没有人已经经历过这个并想出了解决方案?

0 投票
1 回答
420 浏览

session - 如何检测会话是活动的还是过期的?

我可以打电话来确定我的会话在 gsoap 客户端中是否仍然存在吗?

我看到检查会话是否仍然存在的唯一方法是在每次肥皂调用后检查所有 cookie 值是否匹配。自从设置了 tcp_keep_alive 标志以来,gsoap 似乎会意识到会话处于活动状态。gsoap 中是否有允许我在调用肥皂之前检查此内容的功能?是否有回调会通知我会话丢失?或者我应该为此目的制作一个虚拟肥皂方法?

0 投票
2 回答
1913 浏览

c++ - C++ 和 SOAP -> 如何开始

我的项目即将引入 SOAP。它将用于 C++ <-> Java 和 C++ <-> Flex 通信。我负责重构我们的应用程序以利用 Java 业务规则引擎和新的 Flex gui。

C++ SOAP 必须阅读哪些资源?我读过W3材料。我们可能在 Solaris 机器上使用 gSOAP。

0 投票
4 回答
3605 浏览

c++ - C++ - gsoap:参数传递内存管理问题

我正在为它编写一个 Web 服务器和客户端测试存根。我对参数的内存管理有疑问。

我正在从我的客户端调用一个肥皂函数 ns1_func1(input * pInput, output* pOutput) 现在输入和输出类都包含指向其他结构的指针。

例如

类输出 { 类 abc * p1; 类定义 * p2; };

我的问题是 - 谁负责内存分配?客户端负责输入内存分配,服务器负责输出内存管理吗?

现在我的客户端代码看起来像这样

尽管使用soap_new_Output(soap,-1)从服务器分配pOutput,但在调用ns1_func1后我总是将pOutput设为NULL。

另外,我的理解是我们应该使用soap_new_X 来分配内存,当我们调用soap_destroy 时,这些内存会自动释放。如果我错了,请纠正我。

基本上,我在不知道在这种情况下应该由谁来处理内存分配/释放的情况下苦苦挣扎。

任何帮助都会很棒。

0 投票
4 回答
3395 浏览

linux - 如何在嵌入式设备上实现 Web 服务?

我们有一个需要与企业软件系统交互的嵌入式设备。

企业系统当前使用许多不同的机制在其组件之间进行通信:ODBC、RPC、基于 TCP/IP 的专有协议,并且正在转向 .Net 实现的 Web 服务。

嵌入式设备运行 *nix 风格,所以我们正在研究最好的交互机制是什么。

通讯要求如下:

  • 必须通过 TCP/IP 运行。
  • 还必须通过 RS-232 或 USB 运行。
  • 必须是安全的(例如 HTTPS 或 SSL)。
  • 必须能够传输约 32MB 的数据。

    我们目前最好的选择是 gSOAP

    有没有人在 SO-land 有任何其他建议?

    编辑:史蒂文的回答给了我最新的指示。谢谢大家!

  • 0 投票
    2 回答
    660 浏览

    c# - 网络服务减速

    我的网络服务速度变慢了。我的(网络)服务在 gsoap 和托管 C++ 中。它不是托管的 IIS/apache,而是使用 xml。我的客户端在 .NET 中,服务计算时间很短(<0.1s 准备回复)。我希望该服务能够顺利、快速并具有良好的可用性。我有大约 100 个客户,响应时间是 1 秒。客户每分钟大约有 1 个请求。客户端通过 tcp 开放端口测试检查 Web 服务是否存在。因此,为了避免可能的拥塞,我将 gSoap KeepAlive 设置为 false。直到一切正常:我在 TCPView (sysinternals) 中看到连接

    新的特殊同步程序现在循环调用该服务。它的负载更高,但所有内容都在不到 30 秒的时间内处理完毕。使用 sysinternals TCPView,我看到大约 1000 个连接处于 TIME_WAIT 中。他们减慢了服务速度,现在服务需要几秒钟才能回复。

    难道是我需要重置 SoapHttpClientProtocol 连接?有人有 TIME_WAIT 鬼和一个循环的 Web 服务调用?