MFC gsoap开发实录

       先抄一段介绍性的话:gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于 gSOAP具 有相当不错的兼容性,通过gSOAP,我们就可以调用由Java, .Net, Delhpi, PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。

       据说这个很牛逼,但是对于中文字符的支持并不好,所以现在项目转到用SOAP来实现,也在学习中。有用过的大侠们么,加我QQ378717567~

       现在现在网上转帖一篇帖子,


 

2建立c#的webservice,建立asp.net的web服务工程,写入代码,过程之前的文档写过,这里不再重复。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
/// <summary>
/// WebService の概要の説明です
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// この Web サービスを、スクリプトから ASP.NET AJAX を使用して呼び出せるようにするには、次の行のコメントを解除します。 
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
    public WebService () {
        //デザインされたコンポーネントを使用する場合、次の行をコメントを解除してください 
        //InitializeComponent(); 
    }
    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }
 
    [WebMethod(Description = "计算a+b=sum的功能")]
    public int Add(int a, int b)  
    {  
        return a + b;  
    }  
    [WebMethod(Description = "显示问候语的功能")]  
    public string Show(string yourname)  
    {  
        return "popular" + "欢迎" + yourname;  
    }
    [WebMethod(Description = "AddNumbers")]
    public string AddNumbers(string NumberOne, string NumberTwo)
    {
        return "value:"+NumberOne+" "+NumberTwo;//NumberOne + NumberTwo + "hehe";
    }
}
3客户端将来需用到wsdl文件,这里用到的是.net的webservice       
在.NET中三种方式生成WSDL的方法
1.在Web Service的URL后面加上WDSL需求,如下:
http://localhost/webExamples/simpleService.asmx?WSDL
2.使用disco.exe。在命令行中写下如下的命令:
disco http://localhost/webExamples/simpleService.asmx
3.使用System.Web.Services.Description命名空间下提供的类
这里我只是用第一种方法
4开始写客户端程序           
 wsdl2h -o outfile.h(为自己任意起的头文件) infile.wsdl(提供的wsdl文件)     
 如果用生成纯C的代码,需要加编译选项-c         
 wsdl2h -c -o outfile.h(为自己任意起的头文件) infile.wsdl(提供的wsdl文件)    
 根据生成的outfile.h文件,用工具soapcpp2 outfile.h生成构架代码      
 如果用生成纯C的代码,需要加编译选项-c         
 soapcpp2 -c outfile.h生成构架代码         
 注意:在编译的过程中会提示找不到文件stlvector.h,你需要在gsoap\import下把这个文件拷贝过来。   
 1)用到第三步的第一个方法         
wsdl2h -o gjl.h http://localhost:4197/WebSite7/WebService.asmx?wsdl
 2)编译刚才生成的gjl.h         
soapcpp2 -c gjl.h
结果图图没全截,大致如下

 

 

 3)      根据 2)编译后生成的文件中,做为客户端需包含如下文件:           
soapC.cpp  soapWebServiceSoapProxy.cpp stdsoap2.cpp  soapH.h  soapStub.h soapWebServiceSoapProxy.h  stdsoap2.h  WebServiceSoap.nsmap(这个文件根据wsdl不同而不同)
stdsoap2.cpp等文件在gsoap安装目录的其他文件当中可找到
 进行编译,出错请看红色 注意部分              

 

 

 4)开始写客户端代码           
#include "soapWebServiceSoapProxy.h" 
#include "WebServiceSoap.nsmap" 
#include<string>
void main() 
WebServiceSoapProxy service;  
_ns1__HelloWorldResponse* xx=new _ns1__HelloWorldResponse;
********************************************************插入代码  Start       
if (service.HelloWorld(NULL,xx)== SOAP_OK)
{
std::cout<< "HelloWorld Result:" << *(xx->HelloWorldResult)<<"\n";
}
else
service.soap_stream_fault(std::cerr);
_ns1__AddResponse* yy=new _ns1__AddResponse;
_ns1__Add* par=new _ns1__Add;
par->a=100;
par->b=200;
if (service.Add(par,yy) == SOAP_OK)
{
std::cout<<"Add Result:"<< yy->AddResult<<"\n";
}
else
service.soap_stream_fault(std::cerr);
//std::cout<< service.Add("http://localhost:4197/WebSite7/WebService.asmx","http://tempuri.org/Add",NULL,NULL);
********************************************************插入代码  End       
 5)运行结构            

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值