C++通过 soap调用webservice接口 实现交互

本文档详细介绍了如何使用C++通过gsoap库调用WebService接口的步骤,包括测试接口、生成所需文件、代码实现及错误处理。在代码实现部分展示了如何初始化SOAP客户端、设置请求参数和处理返回结果,同时提到了可能出现的编译问题及其解决办法。在错误处理中,提到了预编译头的设置和库的添加。

文章记录我学习C++调用webservice接口

准备

测试接口

postman测试webservice接口

  1. 首先请求类型为post 填写上ws地址 ,url地址后不追加?wsdl

  2. 设置请求头 header Content-type text/xml
    设置

  3. 填写请求体内容 raw
    报文

详细说明:

(1) getWeather是方法名。

(2)theCityCode、theUserID是方法参数。

响应报文也为xml格式

工具准备

soap工具下载

C++调用webservice接口需要第三方工具,
gsoap下载地址:http://sourceforge.net/projects/gsoap2
(我所使用版本为gsoap-2.8)

解压进入到文件夹 gsoap-2.8\gsoap\bin\win32 找到如下四个文件生成所需文件

wsdl文件生成

  1. http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 以该wenservice地址为例,复制该地址并通过浏览器生成.xml文件,
  2. 然后修改文件名为CardService.wsdl文件(文件名随意后缀为 .wsdl 即可)。

c++所需文件生成

  1. 环境准备
    .wsdl文件,例如 CardService.wsdl
    stdsoap2.cpp
    stdsoap2.h
    文件拷贝到win32目录

  2. 生产头文件
    控制台目录切换到win32 //wsdl2h.exe目录
    wsdl2h.exe -o CardService.h CardService.wsdl

    生成 CardCenterPubInterface.h

  3. 通过头文件生成源码接口
    soapcpp2.exe CardService.h

  4. 加入工程
    将下列文件加入到VS工程中,或者生成动态库
    CardService.h

    soapH.h
    soapStub.h
    stdsoap2.h
    soapC.cpp
    soapClient.cpp
    stdsoap2.cpp

    CardWebServiceServiceSoapBinding.nsmap

    一共为八个文件

    工程属性 C/C+±>预处理器–>预处理器定义加入 _CRT_SECURE_NO_WARNINGS;
    C/C+±>预编译头–>预编译头选择“不适用预编译头”

代码部分

头文件

下面为所需要包含的 头文件

#include "gosal\callBusinessHttpBinding.nsmap"
#include "gosal\soapStub.h"

需要包含 .nsmap 文件以及 soapStub.h 文件

代码实现

下面为 代码实现部分

 int __stdcall GetKey(CString path, char* Key)
{
   
   

	USES_CONVERSION;
	std::string s(W2A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值