精华内容
下载资源
问答
  • Win7 X86 + VS2013 + FastCGI + gSOAP搭建 WebService
  • gsoap搭建webservice

    2014-01-12 23:31:24
    1.gsoap工具下载地址;...2.新建win32控制台工程webservice,新建webservice/interface目录; 3.新建接口头文件interface/interface.h,根据需要声明接口函数; //gsoap ns service name: interface //gsoa

    1.gsoap工具下载地址;

    http://sourceforge.net/projects/gsoap2/files/

    2.新建win32控制台工程webservice,新建webservice/interface目录;

    3.新建接口头文件interface/interface.h,根据需要声明接口函数;

    //gsoap ns service name: interface
    //gsoap ns service namespace: http://localhost/interface.wsdl
    //gsoap ns service location: http://localhost
    //gsoap ns service executable: interface.cgi
    //gsoap ns service encoding: encoded
    //gsoap ns schema namespace: urn:interface
     
    int ns__add(int nNumber1, int nNumber2, int* nOutputNumber);

    4.命令行进入webservice/interface目录,执行bin/soapcpp2.exe interface.h,生成以下文件;

     

    5.将stdsoap2.hstdsoap2.cpp拷贝到webservice目录下,并引入工程(预编译头选项->”否”);

    6.新增Realization.hRealization.cpp用以声明和实现interface.h中的函数,放在webservice目录下;

    #pragma once
     
    // 说明:server端的实现函数与interface.h中声明的函数相同,但是多了一个当前的soap连接的参数
     
    int ns__add(struct soap *stSoap, int nNumber1, int nNumber2, int *nOutputNumber);
    

    #include "Realization.h"
     
    int ns__add(struct soap *stSoap, int nNumber1, int nNumber2, int *nOutputNumber)
    {
    *nOutputNumber = nNumber1 + nNumber2;
    return 0;
    }

    7.将interface/soapH.hinterface/soapStub.hinterface/soapC.cppinterface/soapServer.cpp引入工程(预编译头选项->”否”);

    8.新增webservice/stringEx.h,用以字符串转换;

    #ifndef _STRINGEX_H
    #define _STRINGEX_H
     
    #include <stdlib.h>
     
    /* 
    *********************************************************************** 
    * 函数:THCAR2Char 
    * 描述:将TCHAR* 转换为char* 
    * 日期:-05-30
    *********************************************************************** 
    */
    char* THCAR2char(TCHAR* tchStr)
    {
    int iLen = 2 * wcslen(tchStr);	 // CString,TCHAR汉字算一个字符,因此不用普通计算长度
    char* chRtn = new char[iLen + 1];
    wcstombs(chRtn, tchStr, iLen + 1);	// 转换成功返回为非负值
    return chRtn; 
    }
    #endif

    
    

    9.编写tmain主线程入口函数;

    // webservice.cpp : 定义控制台应用程序的入口点。
    //
     
    #include "stdafx.h"
    #include "stringEx.h"
    #include "Realization.h"
    #include "interface/interface.h"
    #include "interface/interface.nsmap"
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    int nMasterSocket = INVALID_SOCKET;
    int nSlaveSocket  = INVALID_SOCKET;
     
    struct soap stSoap;
    soap_init(&stSoap);
    if (argc < 2)
    {
    std::cout << "usage:" << argv[0] << "<server port>." << std::endl;
    return 0;
    }
    char *pszPort = THCAR2char(argv[1]);
    nMasterSocket = soap_bind(&stSoap, NULL, atoi(pszPort), 100);
    delete []pszPort;
    pszPort = NULL;
     
    if (nMasterSocket < 0)
    {
    soap_print_fault(&stSoap, stderr);
    return 0;
    }
     
    std::cout << "Socket connection successful.Master socket = " << nMasterSocket << std::endl;
     
    while (true)
    {
    nSlaveSocket = soap_accept(&stSoap);
    if (nSlaveSocket < 0)
    {
    soap_print_fault(&stSoap, stderr);
    return 0;
    }
    // 该句说明该server的服务
    soap_serve(&stSoap);
    soap_end(&stSoap);
    }
     
    system("pause");
    return 0;
    }

    10.调试运行(带端口参数:如8101),在IE中输入http://localhost:8101如果显示XML页面,说明程序已经启动。

     

    展开全文
  • Apache2.2 + FastCGI + gSOAP搭建 WebService工具,内含: 1、fcgi-2.4.1-SNAP-0910052249.tar.gz 2、mod_fcgid-2.3.9-crlf.zip 3、httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
  • gSoap搭建WebService

    2010-08-03 15:16:00
    1,搭建环境。(Tomcat,axis)搭建这些东西网上的资料太多了,自己找吧!2,使用java编写服务的接口,然后,拷贝到/opt/axis_1.4/webapps/axis/WEB-INF目录下,并改名为.jws。最好通过http://IP:port/axis/User.jws...

    1,搭建环境。(Tomcat,axis)搭建这些东西网上的资料太多了,自己找吧!

    2,使用java编写服务的接口,然后,拷贝到/opt/axis_1.4/webapps/axis/WEB-INF目录下,并改名为.jws。最好通过http://IP:port/axis/User.jws进行验证,查看接口是否正确。

    3,部署服务。编写deploy.wsdd文件。deploy.wsdd文件如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <deployment   xmlns ="http://xml.apache.org/axis/wsdd/"   xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java">


          <service name="UserWebSer" provider="java:RPC"> //服务名称声明
          <parameter name="className" value="UserClass"/>//服务调用接口
             <parameter name="allowedMethods" value="*"/> //函数访问控制
                 <operation name="addUser" returnType="ns:int">//函数解析
                   <parameter name="username" type="ns:string"/>
                   <parameter name="password" type="ns:string"/>
                   <parameter name="email" type="ns:string"/>
                   <parameter name="phone" type="ns:string"/>
                </operation>
                <operation name="editUser" returnType="ns:int">
                    <parameter name="username" type="ns:string"/>
                    <parameter name="password" type="ns:string"/>
                    <parameter name="email" type="ns:string"/>
                    <parameter name="phone" type="ns:string"/>
                </operation>

                <operation name="delUser" returnType="ns:int" >
                    <parameter name="username" type="ns:string"/>
                </operation>

     

    //复杂类型解析

           <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"  
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
           qname="ns:UserClass"
           serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
           type="java:UserClass" xmlns:ns="UserWebSer"/>

          <service name="UserClass" provider="java:RPC">
              <parameter name="allowedMethods" value="*" />
              <parameter name="className" value="UserClass" />
          </service>
         </service>
         </deployment>

     

    4,部署完成后,生成wsdl。

    5,通过gSoap编程。

    6,特定需求。如要求返回的头中需要添加些节点信息。操作如下:

       1)打开soapC.cpp文件,查询soap_out_SOAP_ENV_Header函数。

       2)soap_element_begin_out, soap_element_end_out为创建主节点。

       3)soap_out_byte为创建节点。

     

    完成,如果要求详细的信息,我可以发给你们。

     

     

    展开全文
  • gsoap搭建WebService服务

    2017-07-26 14:44:00
    WebService、soap、gsoap基本概念 WebService服务基本概念:就是一个应用程序,它向外界暴露出一个可以通过web进行调用的API,是分布式的服务组件。本质上就是要以标准的形式实现企业内外各个不同服务系统之间的...

    WebServicesoapgsoap基本概念

    WebService服务基本概念:就是一个应用程序,它向外界暴露出一个可以通过web进行调用的API,是分布式的服务组件。本质上就是要以标准的形式实现企业内外各个不同服务系统之间的互调和集成。

    soap概念:简单对象访问协议,是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。

    从这里的概念可以看得出来,soap是一个基于xml格式的web交互协议,而webservice是一种使用web方式实现的功能。就好像是网络视频服务器和http的关系,就是这里的webservice服务器和soap的关系。其实从历史上来说,先有的soap这种协议,然后微软用基于这种协议制作了webservice这种服务。

    gsoap概念:是一种能够把C/C++语言的接口转换成基于soap协议的webservice服务的工具。

     

    gsoap使用方法

    步骤1首先下载gsoap的工具。这里下载了gsoap_2.7.10.解压之后,在里面会发现两个exe可执行文件。soapcpp2.exewsdl2h.exe。另外还有两个比较重要的源文件:stdsoap2.hstdsoap2.cpp。为了使用方便,可以把两个exe可执行文件所在的问价设置到环境变量中。

    步骤2新建一个.h文件用来声明所要暴露给外界的接口。这里以一些运算的接口来作为例子。头文件命名为calculator.h。注意虽然是.h文件,但是千万不能有注释。内容如下:

    //gsoap ns service name: calculate 
    //gsoap ns service style: rpc 
    //gsoap ns service namespace: http://10.64.57.10/calculate.wsdl
    //gsoap ns service location: http://10.64.57.10/calculate.cgi 
    //gsoap ns schema namespace: urn:calculate

    int ns__add(int num1, int num2, int* result );
    int ns__sub(int num1, int num2, int* result );
    int ns__mult( int num1, int num2, int *result);
    int ns__divid( int num1, int num2, int *result);


        步骤3使用soapcpp2.exe工具来生成相关的源文件。使用方法是soapcpp2 calculator.h

    这里没有带选项,那么生成的是最全的源文件,包括客户端的和服务器的以及其它一些文件。当然也可以使用选项来生成需要的文件,可以再命令行下面使用soapcpp2 –help来参看选项。

    另外在gsoap的安装目录下面有两个重要的源文件:stdsoap2.hstdsoap2.cpp。在编译工程的时候要使用。这里罗列一下生成的重要源文件(包括stdsoap2.hstdsoap2.cpp),它们是:stdsoap2.hsoapStub.hsoapH.hcalculate.nsmap以及stdsoap2.cppsoapC.cppsoapClient.cpp soapServer.cpp

    stdsoap2.hstdsoap2.cppgsoap最底层的实现,它们和每次编写的头文件(calculate.h)无关。soapStub.h(存根头文件),包含了stdsoap2.h,里面声明了定义在calculate.h中的接口,包括客户端的和服务器的。还有一个最上层的soapH.h包含了soapStub.h。它是具体实现的声明。和soapC.cpp对应。calculate.nsmap这个文件应该是soap协议相关的一个东西。在编程序时include calculate.nsmap”就可以了。再来介绍一下源文件,stdsoap2.cpp是和stdsoap2.h对应的,实现最底层的运作,和calculate.h无关;soapC.cpp是和soapH.h对应的,是接口相关的。但是它提供的仅仅是服务器和客户端共有部分的实现。soapClient.cpp也是接口相关的,它里面实现的仅仅是客户端需要的代码。同理soapServer.cpp也是只和服务器相关的。

             好了介绍完了这些源文件,再来梳理一遍。工程中需要的头文件有stdsoap2.hsoapStub.hsoapH.hcalculate.nsmap。但是因为soapStub.h包含了stdsoap2.hsoapH.h包含了soapStub.h,所以工程中只需要包含soapH.hcalculate.nsmap。对于源文件,若是服务器端,需要stdsoap2.cppsoapC.cppsoapServer.cpp;客户端则需要stdsoap2.cppsoapC.cppsoapClient.cpp

             为了偷懒,编写了一个脚本来实现调用soapcpp2和拷贝stdsoap2.hstdsoap2.cpp的功能。名字为AutoGsoap.bat。使用方法是把它放到你定义的calculate.h目录下,然后运行,输入你要操作的头文件名字即可。脚本内容如下:

    @echo off

    echo "请输入头文件"
    set /p headfile=

    soapcpp2.exe %headfile%

    copy D:\MyApp\ProfessionalApp\gsoap_2.7.10\gsoap-2.7\gsoap\stdsoap2.h  .\  
    copy D:\MyApp\ProfessionalApp\gsoap_2.7.10\gsoap-2.7\gsoap\stdsoap2.cpp  .\
    pause

     

             步骤4建立服务器端的工程。这里以CalculateServer为例 。新建工程后,添加“wsock32.lib”库,gsoap需要用到sock套接字通信。

    然后编写服务器端的主函数,名称为main.cpp,内容如下:

     

    #include "soapH.h"
    #include "calculate.nsmap"
    #include "stdio.h"

    int main( int argc, char *argv[])
    {
        struct soap *CalculateSoap = soap_new();                                //创建一个soap
        int iSocket_master = soap_bind(CalculateSoap, NULL, 10000, 100);         //绑定到相应的IP地址和端口()NULL指本机,
                                                                                //10000为端口号,最后一个参数不重要。
        if (iSocket_master< 0)                                                  //绑定出错
        {
            soap_print_fault(CalculateSoap, stderr);
            exit(-1);
        }
        printf("SoapBind success,the master socket number is:%d\n",iSocket_master); //绑定成功返回监听套接字
        
        while(1)
        {
            int iSocket_slaver = soap_accept(CalculateSoap);
            if (iSocket_slaver < 0)
            {
                soap_print_fault(CalculateSoap, stderr);
                exit(-2);
            }
            printf("Get a new connection,the slaver socket number is:%d\n",iSocket_slaver); //绑定成功返回监听套接字
            soap_serve(CalculateSoap);
            soap_end(CalculateSoap);
        }
        soap_done(CalculateSoap);
        free(CalculateSoap);

        return 0;
    }

    /*加法的具体实现*/
    int ns__add(struct soap *soap, int num1, int num2, int* result )   
    {
        if (NULL == result)
        {
            printf("Error:The third argument should not be NULL!\n");
            return SOAP_ERR;
        }
        else
        {
            (*result) = num1 + num2;
            return SOAP_OK;
        }
        return SOAP_OK;
    }

    /*减法的具体实现*/
    int ns__sub(struct soap *soap,int num1, int num2, int* result )
    {
        if (NULL == result)
        {
            printf("Error:The third argument should not be NULL!\n");
            return SOAP_ERR;
        }
        else
        {
            (*result) = num1 - num2;
            return SOAP_OK;
        }
        return SOAP_OK;
    }

    /*乘法的具体实现*/
    int ns__mult(struct soap *soap, int num1, int num2, int *result)
    {
        if (NULL == result)
        {
            printf("Error:The third argument should not be NULL!\n");
            return SOAP_ERR;
        }
        else
        {
            (*result) = num1 * num2;
            return SOAP_OK;
        }
        return SOAP_OK;
    }

    /*除法的具体实现*/
    int ns__divid(struct soap *soap, int num1, int num2, int *result)
    {
        if (NULL == result || 0 == num2)
        {
            printf("Error:The second argument is 0 or The third argument is NULL!\n");
            return SOAP_ERR;
        }
        else
        {
            (*result) = num1 / num2;
            return SOAP_OK;
        }
        return SOAP_OK;
    }

     

    编译,运行服务器端程序,从IE浏览器访问10.64.57.10:10000 (该服务器运行的本机IP地址为10.64.57.10)如能看到如下信息,说明服务器运行正常:

             步骤5新建客户端程序进行验证。新建工程如下,同样要包含wsock32.lib

     


    /*客户端主程序*/
    #include "soapH.h"
    #include "calculate.nsmap"
    #include "stdio.h"


    int main( int argc, char *argv[])
    {
        printf("The Client is runing...\n");
        int num1 = 110;
        int num2 = 11;
        int result = 0;

        struct soap *CalculateSoap = soap_new();
        //soap_init(CalculateSoap);
        char * server_addr = "http://10.64.57.10:10000";

        int iRet = soap_call_ns__add(CalculateSoap,server_addr,"",num1,num2,&result);
        if ( iRet == SOAP_ERR)
        {
            printf("Error while calling the soap_call_ns__add");
        }
        else
        {
            printf("Calling the soap_call_ns__add success。\n");
            printf("%d + %d = %d\n",num1,num2,result);
        }

        iRet = soap_call_ns__sub(CalculateSoap,server_addr,"",num1,num2,&result);
        if ( iRet == SOAP_ERR)
        {
            printf("Error while calling the soap_call_ns__sub");
        }
        else
        {
            printf("Calling the soap_call_ns__sub success。\n");
            printf("%d - %d = %d\n",num1,num2,result);
        }

        iRet = soap_call_ns__mult(CalculateSoap,server_addr,"",num1,num2,&result);
        if ( iRet == SOAP_ERR)
        {
            printf("Error while calling the soap_call_ns__mult");
        }
        else
        {
            printf("Calling the soap_call_ns__mult success。\n");
            printf("%d * %d = %d\n",num1,num2,result);
        }

        iRet = soap_call_ns__divid(CalculateSoap,server_addr,"",num1,num2,&result);
        if ( iRet == SOAP_ERR)
        {
            printf("Error while calling the soap_call_ns__divid");
        }
        else
        {
            printf("Calling the soap_call_ns__divid success。\n");
            printf("%d / %d = %d\n",num1,num2,result);
        }
        soap_end(CalculateSoap);
        soap_done(CalculateSoap);
        free(CalculateSoap);

        return 0;
    }


     

     

     

    开启服务器之后,运行客户端程序,打印信息如下:

    此时服务器端也检测到了四个连接:

     

    转自:http://blog.csdn.net/cjnewstar111/article/details/8063465

    展开全文
  • 挂载dll,用gsoap搭建webservice服务端,用三种解决策略。 1)静态调用 2)动态调用 3)用ACE的配置管理器,加载dll的单例对象,实现动态配置、多线程管理。...
    挂载dll,用gsoap搭建webservice服务端,用三种解决策略。 1)静态调用 2)动态调用 3)用ACE的配置管理器,加载dll的单例对象,实现动态配置、多线程管理。
    展开全文
  • gsoap搭建WebService服务和客户端例子

    千次阅读 2017-05-11 00:02:16
    WebService、soap、gsoap基本概念 WebService服务基本概念:就是一个应用程序,它向外界暴露出一个可以通过web进行调用的API,是分布式的服务组件。本质上就是要以标准的形式实现企业内外各个不同服务系统之间的...
  • WebService、soap、gsoap基本概念 WebService服务基本概念:就是一个应用程序,它向外界暴露出一个可以通过web进行调用的API,是分布式的服务组件。本质上就是要以标准的形式实现企业内外各个不同服务系统之间的...
  • gsoap搭建webservice-client

    2014-01-13 22:42:25
    1.创建win32控制台工程webservice-client; 2.将stdsoap2.h、stdsoap2.cpp、interface.nsmap、soapH.h、soapClient.cpp、soapStub.h、soapC.cpp、stringEx.h拷贝到webservice-client目录下,添加到工程(使用预编译...
  • Apache2.2 + FastCGI + gSOAP搭建 WebService工具 Apache安装 选择自定义安装,勾选”Build Headers and Libraries”。 mod_fcgid.so编译 解压mod_fcgid-2.3.9-crlf.zip后,用VS2013打开工程,修改工程属性...
  • gsoap使用方法 步骤1:首先下载gsoap的工具。这里下载了gsoap_2.7.10.解压之后,在里面会发现两个exe可执行文件。soapcpp2.exe和wsdl2h.exe。另外还有两个比较重要的源文件:stdsoap2.h和stdsoap2.cpp。 步骤2...
  • C++利用gsoap实现webService服务端代码

    热门讨论 2013-08-08 14:43:22
    C++利用gsoap实现webService服务端代码
  • 在Linux 平台下 使用gsoapwebservice 的方式实现通信, 此例为结构体实例,实现结构体的参数返回。
  • gsoap搭建和快速WebService示例编写,前面文章已经介绍过,此文直接讲关键点。 (1)返回的目标结构,开头以ns__,这与第一行//gsoap ns XXX 相关,例如 struct ns__EmployeeInfo { int userid; char* name; }; ...
  • C++环境下使用gsoap开发WebService接口
  •  工作中用到了C++发布...1、搭建WebService 2、返回字符串类型的参数 3、发布wsdl文件 下面是具体操作: 1、创建calc.h文件 //gsoap ns service name: calc //gsoap ns service protocol: SOAP //g
  • 一.Hello World效果图 ...搭建webservice 1.环境:vs2010 2.步骤: 【新建 -&gt; 项目 -&gt; web -&gt; ASP.NET Web 服务应用程序 -&gt; 确定】 3.启动webservice服务: 【启动调试F5】 ...
  • 全文转载自...WebService、soap、gsoapWebService:就是一个应用程序,它向外界暴露出一个可以通过web进行调用的API,是分布式的服务组件。本质上就是要以标准...
  • 在Linux下通过gSOAP调试WebService过程

    千次阅读 2013-10-23 21:05:19
    近期有一个项目要与第三方做系统对接,对方系统是采用WebService接口。因为我这里是采用Linux做为服务器,需在Linux下完成WebService接口的调用,通过万能的Google和...通过gSOAP调用WebService,在掌握相关操作步骤后
  • 就像图上的那样 gsoap创建了服务端的calculator.exe 可是localhost:8087/calculator?wsdl却没有显示它的wsdl 本地的wsdl已经拷到程序目录了,后边执行客户端的时候是正常的,证明服务端也已经搭建了 求教[img=...
  • 首先,准备gsoap软件,地址:http://gsoap2.sourceforge.net/,本人以前下载的是gsoap_2.7.15.tar.gz,并装到linux平台中,./configure(默认安装在/usr/local/share/gsoap目录下,也可以使用 ./configure –-prefi....
  • gsoap搭建

    2014-12-16 11:38:33
    一、 环境准备 在本文中,所有程序均在Linux下开发完成,经测试能够正常运行。  在开发过程中,我们需要...我下载的是gsoap_2.7.12.tar.gz 下载下来解压缩,按正常安装过程进行编译、安装。 # tar zxvf gsozp_2

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

gsoap搭建webservice