使用gsoap访问c#编写的webservices入门

本文章参考引用了网上的不少内容,在此对他们表示感谢!!!
一、开发环境准备
  1、从gSoap官方网站 http://gsoap2.sourceforge.net 下载软件

  2、根据文档安装配置gSoap(略)

二、如何开发WEB服务客户端
  1、基本流程

    (1)从WEB服务提供者获取WEB Service的WSDL文件;

    (2)使用gSoap工具wsdl2h,根据WSDL文件生成C/C++语法结构的头文件;

    (3)使用gSoap预编译器soapcpp2,根据.h头文件中定义的信息来生成客户端代码框架;

    (4)实现客户端例程;

    (5)GCC编译客户端,生成可执行代码。

 

例子:
Services.cs

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace="http://www.sohu.com")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () {

        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

    [WebMethod]
    public string HelloWorld(String name) {
        return "Hello World: "+name;
    }
    [WebMethod]
    public string Hello() {
        return "Hello World";
    }
    [WebMethod]
    public int MyAdd(int i,int j) {
        return i+j;
    }

}

得到hello.wsdl
wsdl2h -c hello.wsdl
soapcpp2 -c hello.h

实现客户端例程hello.c
下面函数中用到的结构和函数可以从soapH.h和soapClient.c和soapStub.h中进行查找

#include "soapH.h"
       #include "ServiceSoap.nsmap"
       int main()
       {
          struct soap soap;
 struct _ns1__HelloWorld hh;
          struct _ns1__HelloWorldResponse ret;

 struct _ns1__Hello hello;
 struct _ns1__HelloResponse hret;

 struct _ns1__MyAdd myadd;
 struct _ns1__MyAddResponse mret;
 myadd.i=10;
 myadd.j=20;
 
          soap_init(&soap);
 if(soap_call___ns2__Hello(&soap,NULL,NULL,&hello,&hret)==SOAP_OK)
{
 printf("call Hello():\t%s\n",hret.HelloResult);
}
 if(soap_call___ns2__MyAdd(&soap,NULL,NULL,&myadd,&mret)==SOAP_OK)
{
 printf("call MyAdd():\t%d\n",mret.MyAddResult);
}
 //
 hh.name=malloc(20);
 strcpy(hh.name,"haha");
       if (soap_call___ns2__HelloWorld(&soap, NULL, NULL, &hh, &ret) == SOAP_OK)
               printf("call HelloWorld()\t%s\n",ret.HelloWorldResult);
          else
             soap_print_fault(&soap, stderr);
 free(hh.name);
 //
          soap_destroy(&soap);
          soap_end(&soap);
          soap_done(&soap);
          return 0;
       }

写个Makefile文件(我使用的环境是FC7)

GSOAP_PATH=/home/wzp/gsoap-linux-2.7
SOAPC=${GSOAP_PATH}/stdsoap2.c
CC=gcc
COFLAGS=-O2
CWFLAGS=-Wall
CIFLAGS=-I ${GSOAP_PATH}
CMFLAGS=
CFLAGS= $(CWFLAGS) $(COFLAGS) $(CIFLAGS) $(CMFLAGS)

hello:hello.c soapC.c soapClient.c
 $(CC) $(CFLAGS) -o hello hello.c soapC.c soapClient.c $(SOAPC)


 

转载于:https://www.cnblogs.com/mark200106/archive/2007/08/31/876505.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值