方法三:使用gsoap.exe生成文件
由于未知原因,在使用第一种方法时,第一步生成头文件就失败,无法解析wadl的内容,报error.因此本人在网上搜罗大牛的博客查询资料借鉴整理验证,集前人所得才可最终成功.此方法稍微复杂一点点点点,各位看官请耐心.

1.使用wsdl2生成头文件
注意:
如果说传输的内容中含有中文,则需要增加一个bat文件,把传输类型由std::string转为wchar_t*,由宽字符传输,则可以解决乱码问题.刚开始由于没有添加处理文件导致后续接收到的中文乱码,折腾了半天,希望大家少走弯路.
bat文件(用txt文本保存如下文件,再修改后缀为bat即可)中一句话:

xsd__string = | std::wstring | wchar_t*

2.地址最后增加?wsdl, 右击另存为.wsdl文件
在gsoap-2.8\gsoap\bin\win32目录下,首先使用wsdl2.exe生成头文件:

wsdl2h -s -t wsmap.dat WeatherWS.wsdl//(可自动生成.h文件)
//或者不生成wsdl文件,直接使用wsdl的网址也可以生成
wsdl2h -s -t wsmap.dat http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl//(需要手动创建.h文件)

对于需要导出多份接口的情况,需单独运行命令行,不可合并生成
例如:

wsdl2h -s -t wsmap.dat 111.wsdl
wsdl2h -s -t wsmap.dat 222.wsdl

3.使用soapcpp2生成系列文件
soapcpp2 -i -C -x -L -psoapNewProduce .\NewProduceWebService.h -I C:\Projects\3PartyLibrary\gsoap-2.8\gsoap\import
对于需要导出多份接口的情况,需增加-pname来生成不同soapC,soapH,soapStu等文件,不然会在执行上诉命令导出第二套接口时覆盖前一个接口文件,例如:-psoaLogin,则生成soapLoginH,soapLoginStu等文件
soapcpp2常用选项
-C 仅生成客户端代码
-S 仅生成服务器端代码
-L 不要产生soapClientLib.c和soapServerLib.c文件
-c 产生纯C代码,否则是C++代码(与头文件有关)
-I 指定import路径
-x 不要产生XML示例文件
-i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。

执行成功后会生成红框中的文件

3.使用实例
1.加载入项目中
把上图红框中的五个文件(除了soapClientLib.cpp),以及gsoap下的stdsoap2.h和stdsoap2.cpp两个文件添加到项目中.
在项目中添加这七个文件后,cpp文件需要修改属性:在项目中的cpp上右键属性,选择不使用预编译头.

2.调用流程
首先需要添加头文件:
#include “soapH.h”
#include “MobileCodeWSSoap.nsmap”

实例如下:

#include “stdafx.h”
#include
#include “soapH.h”
#include “MobileCodeWSSoap.nsmap”
#include
using namespace std;

int main ()
{
// SOAP的客户端
struct soap m_oSoap;
// WebService调用对象
class _ns1__getMobileCodeInfo getMobileCodeObject;
// WebService返回对象
class _ns1__getMobileCodeInfoResponse getMobileCodeResponseObject;
// SOAP初始化
soap_init(&m_oSoap);
// 调用函数的参数赋值
char strName[24] = {0};
sprintf(strName,“15742451354”);
wchar_t *wstrName = A2W(strName);
getMobileCodeObject.mobileCode = wstrName;
/*如果生成头文件时没有修改类型,那么用如下方式赋值,接收的类型当然也是string:
std::string strName = “15742451354”;
getMobileCodeObject.mobileCode = strName;
*/

// 发送WebService请求,并获得返回结果
int nResult = soap_call___ns1__getMobileCodeInfo(&m_oSoap,NULL,NULL,&getMobileCodeObject,getMobileCodeResponseObject);
// 操作成功
if(SOAP_OK == nResult)
{// 输出返回结果wchar_t* strResult = getMobileCodeResponseObject.getMobileCodeInfoResult;wcout.imbue(locale("chs"));wcout<<"wcout:"<<strResult<<endl;
}
/// 关闭SOAP
soap_destroy(&m_oSoap);
soap_end(&m_oSoap);
soap_done(&m_oSoap);system("pause");

}

C++ gsoap多接口导出步骤相关推荐

  1. jdbc执行Statement接口的步骤

    jdbc执行Statement接口的步骤如下: 1)驱动注册程序: Class.forName(com.mysql.jdbc.Driver); 2)获取连接对象: Connection conn = ...

  2. oracle数据库数据导入导出步骤(入门)

    oracle数据库数据导入导出步骤(入门) 说明:  1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL  2.如果熟悉命令,建议用exp/i ...

  3. cmd imp导入dmp文件_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤...

    正如标题一样,本文内容主要介绍了浅谈入门级oracle数据库数据导入导出步骤,文章通过步骤解析介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!!! ...

  4. oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...

    Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码 2013-07-30 0 dmp文件导入导出步骤 1.创建表空间 --datafile 的路径随便给,但是后面的 ...

  5. Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码

    dmp文件导入导出步骤 1.创建表空间 --datafile 的路径随便给,但是后面的文件命名用dbf CREATE TABLESPACE DTBS LOGGING DATAFILE 'D:\Orac ...

  6. oracle临时表经常被锁_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤

    正如标题一样,本文内容主要介绍了浅谈入门级oracle数据库数据导入导出步骤,文章通过步骤解析介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!!! ...

  7. mysql workbench 导出查询结果_MySQL Workbench查询结果导出步骤

    MySQL Workbench查询结果导出步骤 发布时间:2020-05-19 16:16:31 来源:PHP中文网 阅读:202 作者:三月 本文主要给大家介绍MySQL Workbench查询结果 ...

  8. oracle数据库数据导入导出步骤

    oracle数据库数据导入导出步骤(基础) 前言: Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先 ...

  9. 对接转账到支付宝账户API接口流程步骤

    对接转账到支付宝API接口流程步骤 一.技术指导步骤指引 https://opensupport.alipay.com/support/codelab/detail/488/1445?ant_sour ...

最新文章

  1. Scrum Master角色可能消失吗?
  2. 读写配置文件app.config
  3. OC本学习笔记Foundatio框架集
  4. 进入环境_如何进入Windows恢复环境(WinRE)
  5. 锁相放大器sr830_各位谁会用Stanford SR830啊,我都快被这个锁相放大器折腾死了!!!!-北京搜狐焦点...
  6. P6478-[NOI Online #2 提高组]游戏【dp,二项式反演】
  7. VMware ESXi 虚拟机硬盘格式:精简置备、厚置备延迟置零、厚置备置零
  8. leetcode—17.递归题目python解答
  9. 获取客户端用户真实 IP 地址
  10. html读写txt文件,JS读写文本文件示例代码
  11. CSS消除absolute 的影响
  12. 实战项目 — 爬取 校花网图片
  13. 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
  14. 基于SDN的访问控制模块实现
  15. proteus编译c语言程序,Proteus运行Keil编写的C语言步骤
  16. [易飞]2019年税率改革
  17. 游戏图形测试软件,今日共有3款免费测试网络游戏(组图)
  18. 【AI in 美团】深度学习在文本领域的应用
  19. 2015湘潭邀请赛 Yada Number
  20. mac上打开chm文件

热门文章

  1. 手势密码与TouchID
  2. aes sm1 对比_RFID安全问题的解读
  3. Qt实战笔记-从零开始搭建一套库存管理系统-(五)使用QSqlTableModel实现数据的增删改查
  4. 零基础学习C++系列课程(三) 持续更新中
  5. 疯壳-MTK智能电话手表开发软件下载
  6. 贺岁献礼:求职小说《求求你,给我份工作》(1)
  7. 积分显示服务器累坏了,积分怎么没了?我的新浪积分昨天还有4600多分,今天怎么突然没了 爱问知识人...
  8. Java解决《保龄球》问题
  9. 央视网上线独立搜索页面索引站内信息:Search.cctv.com
  10. SKIL/系统要求/单服务器要求