最近有一个需求要在C++ 里面调用Java 的Web Service。具体的环境是 VS2008, XP sp3.
这两个东东一组合就悲催了。 本来基于微软自己的技术有两个可以选。
1 ATL Server, 悲催的微软啊, 从VS 2008 将ATL Server 从Visual Studio 中拿到了去所谓的开源了。从此在VS2008 里面选用 add web reference 也会出错的, sproxy.exe 也被拿掉了。 去下载了个 ATL Server 的源代码 也没有办法成功编译sproxy。 想想反正这个sproxy 生成的代码也会是一坨一坨的 template 代码。 咱不专业啊, 找其它的呗。
2,微软还有个Windows Web Services API 不过这个更搞, 只有在windows 7, window 2008 下用。 如果XP 下用还得发email 给微软问它讨, 这个你还得是啥大客户啥的, 一年至少几万美刀级别的。
幸好有啥, 开源。开源好啊, 找到个gSoap。 这个现在差不多也成了一个在c++下使用Web Service的事实标准了。 鉴于这个gSoap 的使用方法还得整理出来放到项目的wiki。 俺们就干脆用英语整理了,省的来两遍。
1, gSoap is an open source Web Service /XML binding for C/C++. It supports Windows and GCC operating system.
go to the official web site
http://sourceforge.net/projects/gsoap2
or goto download the http://sourceforge.net/projects/gsoap2/files/latest/download
Currently the stable version is 2.8.8
Of couse we can build the tools from scratch. There is VisualStudio2005 folder, under which the Readme is very importance.
2, We can just use the tools under gSoap to build the stub and proxy source code for us:
there are two tools under gSoap, ther are wsdl2h and soapcpp2.
1, wsdl2h -o service.h -n namespacename URL or file name
the generatd service.h file will be used in the next step.
2, soapcpp2 service.h -C -i -x -I F:\study_code\mfc\gsoap_2.8.8\gsoap-2.8\gsoap\import
-I sepecify the import folder under gSoap.
soapcpp2 will generate the proxy, soaph.h, soapc.c files.
3, how to use the generated files.
Normally, we just use the web service client.If we compile the client code, we need files
soaph.h
soapRSOWebserviceServiceSoapBindingProxy.h
soapStub.h
soapc.cpp
soapRSOWebserviceServiceSoapBindingProxy.cpp
and other two files : stdsoap2.h, stdsoap2.cpp ( they are under the gSoap folder)
The example code can be like:
#include "RSOWebserviceServiceSoapBinding.nsmap"
#include "soapRSOWebserviceServiceSoapBindingProxy.h"
const char endpoint[] = "http://localhost:8080/rso-ws-1.0.5/service";
int main(int argc, char **argv)
{
RSOWebserviceServiceSoapBindingProxy proxy(SOAP_XML_INDENT);
std::string landingPath = "c"; /* optional element of type xsd:string */
int customerId = 2; /* optional element of type xsd:int */
int clientId = 3; /* optional element of type xsd:int */
std::string groupExternalId = "groupExternalId"; /* optional element of type xsd:string */
std::string memberId = "memberId"; /* optional element of type xsd:string */
wstest1__getRSOToken wstest1__getRSOToken_;
wstest1__getRSOToken_.clientId = &clientId;
wstest1__getRSOToken_.customerId = &customerId;
wstest1__getRSOToken_.groupExternalId = &groupExternalId;
wstest1__getRSOToken_.landingPath = &landingPath;
wstest1__getRSOToken_.memberId = &memberId;
wstest1__getRSOTokenResponse wstest1__getRSOTokenResponse_;
proxy.getRSOToken(endpoint, NULL, &wstest1__getRSOToken_, &wstest1__getRSOTokenResponse_);
std::cout << *(wstest1__getRSOTokenResponse_.rsoToken) << std::endl;
std::cout << "successful" << std::endl;
}
分享到:
相关推荐
总之,在Linux下使用gSOAP开发Web Service,不仅能够提升跨平台的互操作能力,还能充分利用Linux系统的稳定性和安全性,是企业级应用开发中不可或缺的技术。通过本文的介绍,希望能帮助开发者更好地理解和掌握这一...
该例子详细展示了如何在Qt 4.5环境下利用C++和gSOAP库来访问由Java的CXF框架构建的Web服务。首先,我们要理解Qt是一个跨平台的应用程序开发框架,它提供了丰富的图形用户界面(GUI)功能。在这个例子中,Qt的多个...
总的来说,gSoap是一个强大的工具,它简化了C++与Web服务之间的交互,使得开发人员能够在C++环境中轻松调用Java、Python、.NET等各种平台上的Web服务。通过深入理解和实践,你将能够利用gSoap构建高效、可靠的分布式...
在Linux环境下,使用C语言开发一个gSOAP客户端来调用Java Web服务服务器是常见的跨平台交互场景。gSOAP是一个开源的C/C++软件开发工具包,它提供了强大的SOAP(Simple Object Access Protocol)处理能力,使得非Java...
在IT行业中,gSOAP是一个非常重要的工具,尤其在开发基于Web服务的应用程序时。它是一个开源的C/C++软件开发工具包,能够帮助开发者处理SOAP(简单对象访问协议)消息和WSDL(Web服务描述语言)接口。本篇文章将详细...
【利用gSOAP进行Web Service开发】\n\nWeb Service是一种基于XML和标准协议的平台无关、语言无关的接口,旨在实现跨平台、跨系统的互操作性。它利用XML作为数据交换格式,使得不同系统间的数据交换变得简单。在南京...
2. **生成客户端代理代码**:使用所选库提供的工具,如MS SOAP Toolkit中的WSC.exe或gSOAP的wsdl2h和soapcpp2,根据Java Web服务的WSDL(Web Service Description Language)文件生成C++客户端代理代码。WSDL文件...
2. 编写C客户端:虽然AXIS主要面向Java开发者,但通过使用第三方库,如gSOAP,也可以创建C/C++客户端。文件"axis应用2-编写C客户端.doc"可能详细介绍了如何实现这一过程。 3. 第一个Service:文件"axis应用1-安装及...
在实际使用中,创建一个客户端实例(如`hsyzSoapProxy hsyz(SOAP_C_UTFSTRING)`),并调用相应的SOAP服务方法(如`SendSms`),处理返回的结果(如`DecodeUtf8(nr1.SendSmsResult)`),并确保所有操作都在相同的编码...
本实例主要探讨了如何使用gSOAP客户端来访问由JAX-WS(Java API for XML Web Services)在MyEclipse 8.x环境中创建的Web服务。这个过程涉及到C++编程和.NET框架的使用,特别是Visual Studio 2005。 首先,让我们...
通过这个简单的例子,我们可以看到C/C++和Web Service之间的集成是完全可行的,Gsoap库提供了强大的工具,使得开发者能够在C/C++应用中充分利用Web Service的能力。这种集成使得跨平台的分布式系统开发变得更加灵活...
它不仅便于人类理解,同时也被各种开发工具所支持,从而在开发过程中提供代码生成等功能,简化了Webservice的开发流程。 - **SOAP (Simple Object Access Protocol)**: SOAP是一种基于XML的信息交换协议,它定义了...