标签: gsoap

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

我想在商业上分发的产品中使用gSOAP.我想到的用途是我怀疑是一个非常典型的工作流 - 使用wsdl2h生成标头,使用soapcpp2消耗标头,然后在我的代码中调用存根中生成的函数.

我不是百分之百确定我需要使用哪些许可才能做到这一点.这里有没有人经历过这个并找到了解决方案?

licensing open-source gsoap

16
推荐指数
1
解决办法
1万
查看次数

使用c ++进行gSoap编译

我试图用一个简单的例子来使用gSoap,用于VS2008.

我做了以下事情:

wsdl2h -o Init.h http://myservices/InitalisationService.asmx?WSDL
Run Code Online (Sandbox Code Playgroud)

然后这个:

soapcpp2 -I "C:\3pSDK\gsoap-2.7\gsoap\import" -i -C -limport Init.h
Run Code Online (Sandbox Code Playgroud)

它产生许多文件.我的项目文件夹如下所示:

// generated files
Init.h
InitalisationServiceSoap.initalizePlayer.req.xml
InitalisationServiceSoap.initalizePlayer.res.xml
InitalisationServiceSoap.nsmap
InitalisationServiceSoap12.initalizePlayer.req.xml
InitalisationServiceSoap12.initalizePlayer.res.xml
InitalisationServiceSoap12.nsmap
ortC.cpp
ortH.h
ortInitalisationServiceSoap12Proxy.cpp
ortInitalisationServiceSoap12Proxy.h
ortInitalisationServiceSoapProxy.cpp
ortInitalisationServiceSoapProxy.h
ortMatlab.c
ortMatlab.h
ortStub.h

// Project Files
ReadMe.txt
stdafx.cpp
stdafx.h
WebServicesClient.cpp
WebServicesClient.vcproj
targetver.h

// files added to the project from gSoap folder
stdsoap2.cpp
stdsoap2.h
typemap.dat
Run Code Online (Sandbox Code Playgroud)

当我构建时,我得到了很多链接器错误(未解析的外部).我找不到任何可以链接的东西(例如没有二进制库) - 我错过了什么?

我认为这可能与文档中的以下内容有关:

要完成构建,请使用您的代码编译和链接生成的soapC.cpp,soapcalcProxy.cpp和运行时gSOAP引擎-lgsoap ++(或使用源stdsoap2.cpp,以防libgsoap ++ .a未安装).

win32有一个gsoap ++库吗?

 1>Compiling...
 1>WebServicesClient.cpp
 1>ortC.cpp
 1>Generating Code...
 1>Linking...
 1>stdsoap2.obj : error LNK2019: unresolved external symbol _soap_faultcode referenced …
Run Code Online (Sandbox Code Playgroud)

c++ gsoap visual-c++

16
推荐指数
1
解决办法
2万
查看次数

使用gSoap进行非阻塞RPC调用

这甚至可能吗?

我知道,我可以进行单向异步通信,但我希望它是双向的.

换句话说,我问的请求/响应模式,但 -blocking,等中描述这里(3 选择)

使用gSoap的异步,已确认的点对点连接相关 - 我也想使(n)acks同步

c c++ soap asynchronous gsoap

15
推荐指数
1
解决办法
1455
查看次数

gSoap接口之间的共享数据类型

我正在尝试实现两个Windows服务,每个服务都是自己的gSoap接口,并且都是每个接口的客户端和服务器.所以我的问题是我在两个接口(带有成员的类)中使用相同的数据类型,并使用soapcpp2.exe -q选项生成c ++代码,这将创建两个不同的命名空间,这很好,它可以工作,但问题是由于名称空间分离,两个接口中应该相同的数据类型现在是不同的,但是如果我删除名称空间,我将发生冲突,因为共享数据类型在两个接口中具有相同的名称.

"问题:

interface 1:
---
>class xsd__Address 
{ 
   char *email; 
   char *url; 
}; 

>int ns1__getAddress(xsd__Address& ret);

---
interface 2:
---
>class xsd__Address 
{ 
   char *email; 
   char *url; 
}; 

>int ns2__setAddress(xsd__Address& ret);

---
Run Code Online (Sandbox Code Playgroud)

在每个头文件的定义之后我用soapcpp2.exe编译它,例如:

soapcpp2.exe -qintf1 -n xxxx //用于接口1

soapcpp2.exe -qintf2 -n xxxx //用于接口2

所以当我的项目中使用两个接口(接口1和接口2)时,我需要这样的东西:

intf1::Interface1 int1;
int1.endpoint="xxx";
intf1::ns__Address address;
int1.ns1__getAddress(address);

intf2::Interface1 int2;
int2.endpoint="xxx";
int2.ns2_setAddress(address); //this don't compile like i was expecting because to the compiler they are not the same object (and it is wright...)
Run Code Online (Sandbox Code Playgroud)

问题:

是否可以在两个或更多接口之间共享数据类型?是?这是如何实现的?

如果不是,实施这个的最佳解决方案是什么?

c++ client gsoap

13
推荐指数
1
解决办法
459
查看次数

是否有gSOAP的轻量级替代品?

我已经尝试使用gSOAP访问Web服务(例如,使用提供的WSDL生成C存根,然后在应用程序中使用它们).但是,我发现生成的.c和目标文件非常大(几兆字节),这是我工作的嵌入式环境中的一个问题.

您是否知道任何更简单的SOAP库,或者我是否必须回归到通用XML生成器和解析器(如ezXML)?

c soap gsoap soap-client

12
推荐指数
1
解决办法
1万
查看次数

如何使用GSOAP for C和C++访问Amazon AWS S3?

我到处寻找这个,我找不到一个像样的代码.如何使用GSOAP访问Amazon AWS S3服务?

c c++ gsoap signature amazon-s3

11
推荐指数
1
解决办法
1346
查看次数

使用C++进行Web应用程序中的后端计算

我正在运行PHP前端到一个应用程序,该应用程序对数据进行大量工作并使用Cassandra作为数据存储.

但是我知道PHP不会给我一些计算所需的性能(以及需要在内存中的大量数据的管理)

我想用C++编写支持的东西,并从PHP应用程序访问它.我正试图弄清楚两者接口的最佳方法.

我看过的一些选项:

  1. 节俭(一个自然的选择,因为我已经将它用于Cassandra)
  2. 谷歌的协议缓冲区
  3. gSOAP的
  4. Apache Axis

以上只是我看过的东西,我不限制自己.

传输到PHP应用程序的数据非常小,因此不需要流式传输.仅传输计算结果.

你们有什么感想?

c++ thrift gsoap protocol-buffers

9
推荐指数
1
解决办法
878
查看次数

使用gSoap进行异步,已确认的点对点连接

这是我的情况:

  1. 我有一个wsdl"翻译"到这样的头文件:wsdl2h -o file.h file.wsdl
  2. 然后,我执行了 soapcpp2 -Icorrect_path -j file.h
  3. 在"服务器端"我实现了服务,使用 soapXXXService.[h|cpp]
  4. 在"服务器端"了,我以前soap_init2(含SOAP_IO_KEEPALIVE),我有soap_bind,soap_accept,soap_copy,等它似乎完全正常工作(见下文)
  5. 在"客户端",我使用生成的proxy对象(再次使用SOAP_IO_KEEPALIVE),构造消息并将其发送到服务器
  6. "服务器"收到此消息并发送回ACK(自定义XML)
  7. "客户"收到了ACK,一切都很好.

所以,我现在要做的是让"服务器"返回"真实"响应"客户端","客户端"必须返回ACK"服务器".

这怎么可能?(它应该是)


"你试过什么?"

我想到了两件事.

第一种方法是以某种方式重用套接字的文件描述符,从中返回soap_accept,将"真实响应"发送回服务器.但这甚至可能吗?
Unix套接字是全双工的,所以这在技术上是可行的,但是这gSoap限制了吗?因为我在文档中没有看到任何相关内容.

我想到的第二个选择是在"客户端"中创建相同的"服务",以便能够接收消息("真实响应")并返回ACK与在"服务器"中完成相同的方式. .但这意味着,"服务器"还必须有一个proxy对象实例才能发送这个所谓的"真实响应".
这对我来说听起来真的很丑陋.如果这是唯一的选择,我不会感到惊讶,但..

编辑:对于第二个选项 - 这意味着,客户端应该有一个侦听器端口,应该处理传入的连接等.听起来不像我的客户端..


我明白,我可能会遗漏一些有用的基本部分gSoap,但我阅读了整个用户文档"入门"指南,但我没有找到任何相关信息.

如果不清楚,请告诉我


编辑:这是我希望实现的方案:

  1. 客户端向服务器发送请求
  2. 服务器返回ACK作为响应(如标准ACK) - 信号成功接收请求 …

c c++ unix linux gsoap

9
推荐指数
1
解决办法
1113
查看次数

使用流式传输的gsoap restful c ++客户端

如何编写一个gsoap restful C++/Solaris客户端,它应该使用流媒体将文档(xsd__base64Binary)发送到webservice?

我们尝试编写一个没有流式传输的gsoap restful客户端,它工作正常.我们使用gsoap生成了一个请求xml(serialization-soap_begin_send( - ),soap_serialize( - ),soap_put( - ),soap_end_send( - )),然后使用了soap_post_connect(---),soap_send(---) ,soap_end_send(---)发送请求.

我们在gsoap客户端使用MTOM进行流式处理并且工作正常.是否可以在gsoap restful客户端中流式传输文档?我们可以在宁静的情况下使用MTOM吗?如果是,请您告诉我们,我应该使用什么gsoap函数进行序列化,然后发送该xml请求?如果您有任何示例代码,请分享.

c++ linux rest web-services gsoap

8
推荐指数
1
解决办法
1905
查看次数

#import:无法在VS 2010中打开文件"soap12.h"来读取gSoap

我正在尝试将gSoap2.8与VS2010 C++项目一起使用,我宣布了一个预构建事件

wsdl2h.exe -o test.h "test.wsdl"
Run Code Online (Sandbox Code Playgroud)

然后它说

error C1083: Cannot open type library file:<path>\stlvector.h: Error loading type library/DLL.  <path>\test.h
Run Code Online (Sandbox Code Playgroud)

所以我用-s来摆脱如下

wsdl2h.exe -s -o .\test.h "test.wsdl"
Run Code Online (Sandbox Code Playgroud)

但后来它说

error : #import: Cannot open file "soap12.h" for reading
Run Code Online (Sandbox Code Playgroud)

我怎么能摆脱这个?

c++ wsdl gsoap visual-studio-2010

8
推荐指数
1
解决办法
2211
查看次数