`
bruce008
  • 浏览: 173366 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在C++下使用gSoap 调用Java开发的Web Service

阅读更多

 

最近有一个需求要在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下使用gSOAP开发Web Service,不仅能够提升跨平台的互操作能力,还能充分利用Linux系统的稳定性和安全性,是企业级应用开发中不可或缺的技术。通过本文的介绍,希望能帮助开发者更好地理解和掌握这一...

    Qt4.5+gSOAP访问Java CXF的Web Service的成熟例子

    该例子详细展示了如何在Qt 4.5环境下利用C++和gSOAP库来访问由Java的CXF框架构建的Web服务。首先,我们要理解Qt是一个跨平台的应用程序开发框架,它提供了丰富的图形用户界面(GUI)功能。在这个例子中,Qt的多个...

    gSoap webservices C++ 客户端

    总的来说,gSoap是一个强大的工具,它简化了C++与Web服务之间的交互,使得开发人员能够在C++环境中轻松调用Java、Python、.NET等各种平台上的Web服务。通过深入理解和实践,你将能够利用gSoap构建高效、可靠的分布式...

    Linux下C gsoap client访问java webservice server

    在Linux环境下,使用C语言开发一个gSOAP客户端来调用Java Web服务服务器是常见的跨平台交互场景。gSOAP是一个开源的C/C++软件开发工具包,它提供了强大的SOAP(Simple Object Access Protocol)处理能力,使得非Java...

    gsoap生成vs调用cpp

    在IT行业中,gSOAP是一个非常重要的工具,尤其在开发基于Web服务的应用程序时。它是一个开源的C/C++软件开发工具包,能够帮助开发者处理SOAP(简单对象访问协议)消息和WSDL(Web服务描述语言)接口。本篇文章将详细...

    利用gsoap进行webservice开发总结.docx

    【利用gSOAP进行Web Service开发】\n\nWeb Service是一种基于XML和标准协议的平台无关、语言无关的接口,旨在实现跨平台、跨系统的互操作性。它利用XML作为数据交换格式,使得不同系统间的数据交换变得简单。在南京...

    vc6.0调用webservice

    2. **生成客户端代理代码**:使用所选库提供的工具,如MS SOAP Toolkit中的WSC.exe或gSOAP的wsdl2h和soapcpp2,根据Java Web服务的WSDL(Web Service Description Language)文件生成C++客户端代理代码。WSDL文件...

    AXIS Web Service入门及应用

    2. 编写C客户端:虽然AXIS主要面向Java开发者,但通过使用第三方库,如gSOAP,也可以创建C/C++客户端。文件"axis应用2-编写C客户端.doc"可能详细介绍了如何实现这一过程。 3. 第一个Service:文件"axis应用1-安装及...

    基于GSOAP的短信发布机制

    在实际使用中,创建一个客户端实例(如`hsyzSoapProxy hsyz(SOAP_C_UTFSTRING)`),并调用相应的SOAP服务方法(如`SendSms`),处理返回的结果(如`DecodeUtf8(nr1.SendSmsResult)`),并确保所有操作都在相同的编码...

    gsoap客户端Jax-ws服务端实例

    本实例主要探讨了如何使用gSOAP客户端来访问由JAX-WS(Java API for XML Web Services)在MyEclipse 8.x环境中创建的Web服务。这个过程涉及到C++编程和.NET框架的使用,特别是Visual Studio 2005。 首先,让我们...

    C、C++与WEBSERVICE[归纳].pdf

    通过这个简单的例子,我们可以看到C/C++和Web Service之间的集成是完全可行的,Gsoap库提供了强大的工具,使得开发者能够在C/C++应用中充分利用Web Service的能力。这种集成使得跨平台的分布式系统开发变得更加灵活...

    webservice_简介

    它不仅便于人类理解,同时也被各种开发工具所支持,从而在开发过程中提供代码生成等功能,简化了Webservice的开发流程。 - **SOAP (Simple Object Access Protocol)**: SOAP是一种基于XML的信息交换协议,它定义了...

Global site tag (gtag.js) - Google Analytics