VS2010使用c++、gSOAP调用WebService 图文教程

简介: 上篇写了“VS2010使用c++、gSOAP创建的WebService 图文教程”,有创建就要有调用,这里就讲一下相同语言框架技术下的调用功能。一、下载WSDL文件这一步其实要以跳过!上篇中 “五、启动WebService并测试》5、打开浏览器,输入你的IP:端口号/itoa?wsdl 访问看看吧,正常的话应该显示“itoa.

上篇写了“VS2010使用c++、gSOAP创建的WebService 图文教程”,有创建就要有调用,这里就讲一下相同语言框架技术下的调用功能。

一、下载WSDL文件

这一步其实要以跳过!

上篇中 “五、启动WebService并测试》5、打开浏览器,输入你的IP:端口号/itoa?wsdl 访问看看吧,正常的话应该显示“itoa.wsdl”文件的内容”

我们知道对方提供的WebService地址,理论上就可以通过以上方式取得WSDL文件的内容;我们的实现是通过“itoa?wsdl”来取得WSDL文件的内容,其它的实现或其它语言的实现可能是通过“itoa.wsdl”来获取WSDL文件的内容。

当然,都是c++的,你也可以让对方把这个文件内容发送给你;

二、生成头文件及相关文件

如果你下载的WSDL文件,执行以下步骤:

1、打开CMD命令提示符工具,切换到WSDL所在的目录

2、执行以下命令:

wsdl2h itoa.wsdl
这时后面会有提示:

To finalize code generation, execute:
> soapcpp2 itoa.h
Or to generate C++ proxy and service classes:
> soapcpp2 -j itoa.h

我们再执行:

soapcpp2 -i -I D:\gSOAP\gsoap-2.8\gsoap\import itoa.h

执行后目录中的文件如下:

如果你没有下载的WSDL文件,执行以下步骤:

1、打开CMD命令提示符工具,切换保存生成相关文件的目录

2、生成头文件

wsdl2h -o itoa.h http://localhost:8087/itoa?wsdl
注意:这种方式要保证你的WebService服务在运行中,如果不在同一台电脑上需要将"localhost"改为IP地址,而上篇创建时的头文件中也是改为对应的IP地址!

3、生成代理文件

soapcpp2 -i -C -I D:\gSOAP\gsoap-2.8\gsoap\import itoa.h

三、创建项目

1、打开VS2010,文件》新建》项目


2、左侧模板中选择Visual c++,右侧选择 Win32 控制台应用程序,输入项目名称,选择保存位置,勾选“为解决方案创建目录”,确定


3、下一步


4、取消“预编译头”的选中状态,完成


四、配置编译

1、打开项目文件目录


2、将第二步生成的代码复制到项目目录下

3、添加文件到项目


4、选择要添加到项目的文件

注意:并不是要把所有文件都添加到项目里!需要的文件参考下图,或下载源码


5、替换“itoaClient.cpp”文件的内容,使用以下代码:

#include "soapitoaProxy.h" 
#include "itoa.nsmap"
#include<string>

int main() 
{ 
   itoaProxy service; 
   double result; 
   if (service.add(111.0, 222.0, result) == SOAP_OK) 
      std::cout << "The sum of 1.0 and 2.0 is " << result << std::endl; 
   else
      service.soap_stream_fault(std::cerr);


   std::string s2("this is a string");
   if (service.itoa(12345, s2) == SOAP_OK) 
      std::cout << "The itoa is " << s2 << std::endl; 
   else
      service.soap_stream_fault(std::cerr);

   service.destroy(); // delete data and release memory 
}

6、编译生成,在项目名称上单击鼠标右键,选择重新生成

选择重新生成的好处是避免之前的生成错误影响本次生成的结果

五、运行测试

1、打开CMD命令提示符

2、切换目录到生成输入目录

3、执行命令:itoaClietn.exe

注意:要保证你的WebService服务在运行中!


结束语

有一点需要注意:我这里只是个示例,可能存在内存泄漏之类的不安全问题,包括上篇中的代码!

这个例子只是讲了C++如何基于gSOAP调用WebService的例子,C语言与此方式不同,请参考官方用户手册;

在学习实践的过程中发现命令选项用错一个,或者项目中多包含了一个文件,都可以导致编译链接错误。

本文源码下载:http://download.csdn.net/detail/testcs_dn/9534678


参考:

http://blog.csdn.net/testcs_dn/article/details/51463367

http://www.genivia.com/products.html

http://www.genivia.com/doc/soapdoc2.html

http://www.cppblog.com/qiujian5628/archive/2008/06/19/54019.html

http://www.cppblog.com/qiujian5628/archive/2008/09/16/61945.html


目录
相关文章
|
10月前
|
IDE 编译器 项目管理
Dev-C++保姆级安装教程:Win10/Win11环境配置+避坑指南(附下载验证)
Dev-C++ 是一款专为 Windows 系统设计的轻量级 C/C++ 集成开发环境(IDE),内置 MinGW 编译器与调试器,支持代码高亮、项目管理等功能。4.9.9 版本作为经典稳定版,适合初学者和教学使用。本文详细介绍其安装流程、配置方法、功能验证及常见问题解决,同时提供进阶技巧和扩展学习资源,帮助用户快速上手并高效开发。
|
算法 数据挖掘 Shell
「毅硕|生信教程」 micromamba:mamba的C++实现,超越conda
还在为生信软件的安装配置而烦恼?micromamba(micromamba是mamba包管理器的小型版本,采用C++实现,具有mamba的核心功能,且体积更小,可以脱离conda独立运行,更易于部署)帮你解决!
634 1
|
存储 C++
c++的指针完整教程
本文提供了一个全面的C++指针教程,包括指针的声明与初始化、访问指针指向的值、指针运算、指针与函数的关系、动态内存分配,以及不同类型指针(如一级指针、二级指针、整型指针、字符指针、数组指针、函数指针、成员指针、void指针)的介绍,还提到了不同位数机器上指针大小的差异。
546 1
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
3121 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
存储 算法 编译器
C++ 函数式编程教程
C++ 函数式编程学习
|
存储 编译器 开发工具
C++语言教程分享
C++语言教程分享
|
存储 编译器 C++
|
C++ 存储 索引
面向 C++ 的现代 CMake 教程(一)(5)
面向 C++ 的现代 CMake 教程(一)
284 0
|
缓存 存储 C++
面向 C++ 的现代 CMake 教程(一)(4)
面向 C++ 的现代 CMake 教程(一)
201 0
|
C++ 缓存 存储
面向 C++ 的现代 CMake 教程(一)(3)
面向 C++ 的现代 CMake 教程(一)
464 0