VC++通过gSOAP调用C#的Web Service
来源:互联网 发布:js中json对象转字符串 编辑:程序博客网 时间:2024/05/21 19:34
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);//HelloWorldif (soap1.error){//get error messagereturn;}m_sRes = hws1.HelloWorldResult->c_str();soap_destroy(&soap1);soap_end(&soap1);soap_done(&soap1);UpdateData(FALSE);}-然后编译VC++工程,应该会成功。
测试过程:
启动WebService服务;
启动VC++应用,点击button1,结果会显示到textbox中。
- VC++通过gSOAP调用C#的Web Service
- gsoap 通过SSL双向认证调用service
- VC 2010 使用GSOAP调用C#写的WEBSERVICE
- BB 10 cascades + gsoap调用web service
- gsoap 实现 C/C++ 调用web service
- C#调用 Web Service
- gSOAP,C++的Web Service封装库
- gsoap用于web service的开发
- C#调用Web Service时的身份验证
- C#调用Web Service时的身份验证
- C#调用Web Service时的身份验证
- php调用C#的Web Service
- C#调用Web Service时的身份验证
- C#调用Web Service时的身份验证
- C++的gsoap客户端与基于WCF的C#服务端Web Service交互的问题
- gSoap开发Web Service
- gSoap访问Web Service
- gSoap 创建Web Service
- 设计模式笔记之——单例设计模式
- 搭建Nginx图片服务器
- word-wrap、word-break和white-space
- 一般处理程序获取客户端post和get的请求信息
- APP自动化框架LazyAndroid使用手册(4)--测试模板工程详解
- VC++通过gSOAP调用C#的Web Service
- 三门问题之概率思维
- Google Samples MVP + RxJava 官方精简Demo
- leetcode题解分析_84. Largest Rectangle in Histogram
- Filter
- Two Sum
- 大数乘法
- AngularJs如何验证重复密码
- 关于printf()函数的总结