前言:学校项目中要用到C/C++处理webService技术。就查了一下网上的相关教程,觉得相关内容比较少,就想自己写个简单使用教程。还有,关于c++处理wchar_t方面的问题真让人头疼。。。。
简介: gSOAP一种跨平台的C和 C++软件开发工具包, 让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。 简而言之,gSOAP为C/C++语言提供了对SOAP/XML的一系列操作。
这里只介绍使用gSOAP工具来调用指定服务器提供的webService接口操作(client C++)。
本文使用的示例来自网站
http://www.webxml.com.cn/zh_cn/web_services.aspx
该网站中的
[新] 中文<->英文双向翻译WEB服务
http://fy.webxml.com.cn/webservices/EnglishChinese.asmx
大致思路:
- 使用wsdl2h命令将WSDL转换为.h头文件;
- 使用soapcpp2命令将转换好的.h头文件生成对应的数据绑定的实现;
- 编写main.cpp来调用gSOAP工具生成的接口
STEP 1
下载gsoap工具 http://sourceforge.net/projects/gsoap2
将/gsoap-2.8/gsoap/bin/win64路径添加到系统环境变量中。
STEP 2
新建工作文件夹,并在该文件夹下新建文件名为typemap的dat文件
在typemap.dat文件内加入以下语句
xsd__string = | std::wstring | wchar_t*
保存完之后,在该文件夹打开终端执行命令
wsdl2h -o {要生成的头文件名} {wsdl文件}
这里我们运行
wsdl2h -o translator.h http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?WSDL
执行完之后文件夹内会生成translator.h头文件
STEP 3
在文件夹打开终端执行命令
soapcpp2 -j -r -CL {已经生成好的头文件} -I {gsoap文件夹中的import路径}
这里我们运行
soapcpp2 -j -r -CL translator.h -I 路径应该根据自己文件所在位置填写/gsoap-2.8/gsoap/import
soapcpp2命令参数解释:
Option -j produces C++ proxy classes with -CL indicating client-side(non-libs)
执行soapcpp2命令之后会生成几个相关文件:
STEP 4
在…/gsoap-2.8/gsoap 文件夹中将stdsoap2.h和stdsoap2.cpp两个文件复制到当前工作文件夹。
STEP 5
编写代码
//main.cpp #include "soapH.h" #include "soapC.cpp" #include "stdsoap2.cpp" #include "EnglishChineseSoap.nsmap" #include "soapEnglishChineseSoapProxy.cpp" #include//setlocale(LC_ALL,""); using std::cout; using std::endl; using std::string; using std::wstring; using std::wcout; using std::wcin; void test0(){ const char *web_url="http://fy.webxml.com.cn/webservices/EnglishChinese.asmx"; setlocale(LC_ALL,""); EnglishChineseSoapProxy soap_proxy(web_url,SOAP_C_UTFSTRING); wchar_t word[100]=L"好"; _name__SuggestWord suggest_word; _name__SuggestWordResponse resp; suggest_word.wordKey=word; wcout< string; for(auto &s:res){ wcout< test0(); }
需要注意的是,类名可能会有不一样的地方,所以要去stdsoap2.h,soapH.h,soapEnglishChineseSoapProxy.h中查看类的具体声明。
运行结果:
参考文章:
https://www.genivia.com/dev.html#client-cpp
https://zhuanlan.zhihu.com/p/267795358
四级考试可真折磨人。。。。。。。
前端课好TM无聊阿我不想写前端,要是20级能置换选修课的成绩就好了
还有,学校为啥选修课不能免修阿。。。。。


![[原创]gsoap的基本使用方法『C++web服务工具包』 [原创]gsoap的基本使用方法『C++web服务工具包』](http://www.mshxw.com/aiimages/31/832592.png)
