cmd 调用webservice接口_C++ 调用 Webservice gSoap 方法
大体思路是:使用gsoap生成文件,把生成的相关文件均加载到项目中调用
本文以调用天气的webservice为例子,手把手教你。
步骤一
准备gSOAP工具:将gsoap_2.8.100.zip解压,进入gsoap_2.8.100gsoap-2.8gsoapbinwin32目录下,或win64目录下。(工具可以在这个网址下载:https://sourceforge.net/projects/gsoap2/files/gsoap-2.8/)
步骤二
准备要调用的webservice接口的wsdl地址,比如网上的查询天气接口:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
打开链接是这个样子:
右击这网页,选择“另存为”到win32目录下,直接把文件名后缀改成.wsdl,如下:
步骤三
在win32目录下新建一个文件”wsmp.dat“,文件内容为xsd__string = | std::wstring | wchar_t*
那么SOAP/XML中的string将转换成std::wstrin或wchar_t*,这样能更好地支持中文。
步骤四
在该目录下打开cmd窗口,输入以下命令。回车后WeatherWS.h头文件
wsdl2h -s -t wsmap.dat WeatherWS.wsdl
- -o 文件名,指定输出头文件
- -n 名空间前缀 代替默认的ns
- -c 产生纯C代码,否则是C++代码
- -s 不要使用STL代码
- -t 文件名,指定type map文件,默认为typemap.dat
- -e 禁止为enum成员加上名空间前缀
步骤五
解析WeatherWS.h,生成存根程序
在该目录下打开cmd窗口,输入以下命令。
soapcpp2 -i -C -x -L WeatherWS.h -I D:gsoap_2.8.108gsoap-2.8gsoapimport
注意D:gsoap_2.8.108gsoap-2.8gsoapimport是我的路径,根据你的路径来变。
此时会生成6个文件,如下图:
- -C 仅生成客户端代码
- -S 仅生成服务器端代码
- -L 不要产生soapClientLib.c和soapServerLib.c文件
- -c 产生纯C代码,否则是C++代码(与头文件有关)
- -I 指定import路径(此项是必要的,因前面为指定-s)
- -x 不要产生XML示例文件
- -i生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。
步骤六
打开Visual Studio 2017,在里面新建一个空项目。我在这里命名为“TestWebservice”。
将文件复制到vs的项目目录下,选择“添加现有项”,添加好的样子如下:
其中的stdsoap2.h和stdsoap2.cpp在gsoap_2.8.100gsoap-2.8gsoap目录下
在“源文件”目录下,右击新建一个.cpp文件添加main函数。空项目默认啥都没有。
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include < string >
#include <iostream>#include <iostream>
//包含soap头文件
#include "soapH.h"
#include "soapStub.h"
#include "WeatherWSSoap.nsmap"
#include "soapWeatherWSSoapProxy.h"using namespace std;void main(int argc, char **argv)
{//WebService的请求地址const char* web_url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx";//soap接口WeatherWSSoapProxy soap(SOAP_C_UTFSTRING);//构造输入参数_ns1__getWeather city_name;city_name.theCityCode = L"";city_name.theUserID = L"";//输出参数_ns1__getWeatherResponse weather_res;//调用接口方法getWeather int xlt = soap.getWeather(web_url, NULL, &city_name, weather_res);//判断接口返回值, SOAPOK表示成功if (xlt == SOAP_OK){// 获取返回结果ns1__ArrayOfString* aos = weather_res.getWeatherResult;// 打印返回结果int count = aos->__sizestring;for (int i = 0; i < count; i++){std::wstring a = (aos->string)[i];wcout.imbue(locale("chs"));wcout << a.c_str() << endl;}}getchar();
}
错误修改
会有红色下划线错误提示
右击项目“属性”->c/c++->语言->符合模式,改成否。如下图:
最后的结果
原创不易,欢迎评论,并点赞!!
Enjoy!!!
cmd 调用webservice接口_C++ 调用 Webservice gSoap 方法相关推荐
- SpringBoot集成Axis2,部署webservice接口并调用
SpringBoot集成Axis2,部署webservice接口并调用 一.省略新建springboot项目过程 1.pom.xml 2.application.yml 3.准备工作做完,编写serv ...
- php访问微博页面,PHP调用微博接口实现微博登录的方法示例
PHP调用微博接口实现微博登录的方法示例 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: PHP调用微博接口实现微博登录的方法示例.txt ] (友情提示:右键点 ...
- cmd 调用webservice接口_c# 三种方法调用WebService接口
1.引用*.wsdl文件 WebService服务端会提供wsdl文件,客户端通过该文件生成.cs文件以及生成.dll. 注意:若服务端只提供的了URL,在URL后面加上"?wsdl&quo ...
- android调用web接口,Android调用webservice 接口
以查询手机号码归属地的Web service为例,它的wsdl为 1 在Android项目中导入??Ksoap2-android jar第三方jar包?? 2 Activity代码 public cl ...
- linux 调用rest接口,REST调用
1. 概述 与SOAP相比,REST WebService简化了调用,也降低了技能要求. REST 近年来已经成为最主要的 Web 服务设计模式. 事实上,REST 对 Web 的影响非常大,由于其使 ...
- Sentinel结合Fejgn接口,进行调用远程接口的调用和限流
sentinel 适配了 Feign 组件.如果想使用,除了引入 sentinel-starter 的依赖外还需要 2 个步骤: 1.引入依赖 <!--feign对sentinel的支持--&g ...
- ios调用restful接口_Postman调用https异常解决
Postman为开发者比较常用的api测试工具,功能强大,支持各种restful接口调试,支持文件上传和文件下载. 这里主要根据项目调用https接口出现以下异常做个简要的操作讲解: 调用接口后pos ...
- php 登陆微博,PHP调用微博接口实现微博登录的方法示例
在平时项目开发过程中,除了注册本网站账号进行登录之外,还可以调用第三方接口进行登录网站.这里以微博登录为例.微博登录包括身份认证.用户关系以及内容传播.允许用户使用微博帐号登录访问第三方网站,分享内容 ...
- c++调用python接口_Python调用有道智云文本翻译API接口实现“智能”伪原创
>> 开始伪原创中..\")"],[20,"\n","24:\"OL7j\"|36:131"],[20,&q ...
最新文章
- Web服务器和应用程序服务器有什么区别
- python3 中递归的最大次数
- 用平常心去对待不平常的事
- java数组的几种形式——java编程思想01
- 朱明亮:参与开源软件让业余时间更有意义
- xp故障恢复控制台和它的命令
- gradle 安装_如何安装Gradle
- cmd窗口pip显示不是内部或外部命令,也不是可运行的程序或批处理文件
- 解决“在eclipse中配置Tomcat时,出现Cannot create a server using the selected type的错误”的问题...
- python项目依赖库打包发布方法
- LongListSelector 控件 在 wp7 和wp8中的不同之处
- SQL2K数据库开发十四之表操作设置用户对表的权限
- php smarty配置文件,Smarty配置文件
- 【安卓开发】Android平台的记账本app(全部代码+room框架操作数据库+设计报告)
- python下载前获取文件大小
- 用c语言编写gps程序,GPS模拟C语言
- Boom 2 for Mac(音频助推器及均衡器) v1.6.7中文激活版
- SVN客户端详细说明
- mysql 数据库快速入门 数据库的发展
- oracle后台进程介绍,Oracle后台进程介绍