VC++通过gSOAP调用C#的Web Service

VC++写的程序本来通过HTTP调用ISAPI进行处理,但是感觉模式有些老了,想用Web Service试试。

C#写程序调用WebService是很方便的,但是VC++有些麻烦。看了几种方法,比如MSSOAP.DLL,还有其他的库,感觉比较老了,并且最近没有更新,倒是gSOAP一直更新,最新的是2.8.18。

先是建立了一个Web Service,用的是C#,默认的HelloWorld。

然后使用gSOAP建立访问代码:

-先用wdsl2h产生h文件,命令格式类似:wsdl2h -o my1.h http://localhost:1687/webservice1.asmx?WDSL

--运行的时候有可能会提示找不到stdvector.h等文件,最简单的就是将wdsl2h放到gsoap的import目录中运行。

-再用soapcpp2产生访问代码,命令格式类似:soapcpp2 my1.h

--会产生一堆的文件。

再建立一个VC++的对话框应用,建立一个textbox和一个button。

-将gsoap产生的一些文件加入到此工程中,包括:.nsmap、stdsoap2.h、stdsoap2.cpp、soapC.cpp、soapClient.cpp、soapH.h、soapStub.h。

--如果添加了多于的会提示定义重复等,然后移除就可以了,比如soapClientLib.cpp就不要。

-编译中可能会提示stdafx.h文件,可以设置工程不需要预编译头文件,或者在有关的文件最开始加入 #include "stdafx.h"就可以了。

-添加textbox的变量,button的处理函数,添加代码:

#include "soaph.h"
#include "webservice1soap.nsmap"
void CMFCApplication2Dlg::OnBnClickedButton1()
{
	struct soap soap1;
	soap_init(&soap1);
	char szSvr[] = "http://localhost:32392/WebService1.asmx"; //http://localhost:32392/WebService1.asmx?op=HelloWorld
	_ns1__HelloWorld hw1;
	_ns1__HelloWorldResponse hws1;
	soap_call___ns1__HelloWorld(&soap1, szSvr, "",&hw1,hws1);//HelloWorld

	if (soap1.error)
	{
		//get error message
		return;
	}

	m_sRes = hws1.HelloWorldResult->c_str();

	soap_destroy(&soap1);
	soap_end(&soap1);
	soap_done(&soap1);

	UpdateData(FALSE);
}
-然后编译VC++工程,应该会成功。


测试过程:

启动WebService服务;

启动VC++应用,点击button1,结果会显示到textbox中。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值