snoap下载地址

https://sourceforge.net/projects/gsoap2/?source=typ_redirect

新建vc工程并添加源文件

./snoap/bin/win32/soapcpp2.exe拷贝到工程目录

cmd 运行soapcpp2.exe  会生成一大堆文件

我们先在源文件中声明一个接口

int plus(int num_1, int num_2, int *sum);

编译再运行soapcpp2.exe

添加文件

stdsoap2.h

stdsoap2.cpp

这两个文件在下载包中

soapH.h

soapC.cpp

soapStub.h

soapServer.cpp

到工程目录

其中soapH.h和soapC.cpp是具体的实现,soapStub.h为代理的声明

编译出现了两个无法解析的外部符号

1>------ 已启动生成:  项目: ClipBoard, 配置: Debug Win32 ------
1>soapServer.obj : error LNK2019: 无法解析的外部符号 "int __cdecl plus(struct soap *,int,int,int *)" (?plus@@YAHPAUsoap@@HHPAH@Z),该符号在函数 "int __cdecl soap_serve_plus(struct soap *)" (?soap_serve_plus@@YAHPAUsoap@@@Z) 中被引用
1>stdsoap2.obj : error LNK2001: 无法解析的外部符号 _namespaces
1>D:\MyCode\SpasvoProc\Output\Debug\ClipBoard.exe : fatal error LNK1120: 2 个无法解析的外部命令
========== 生成:  成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

第一个是因为只声明没有实现

将soapStub.h文件最后的函数放在另个文件中实现

SOAP_FMAC5 int SOAP_FMAC6 plus(struct soap*, int num_1, int num_2, int *sum)
{
 *sum = num_1 + num_2;
 printf("sum = %d", sum);
 return SOAP_OK;
}

解决了一个问题

1>------ 已启动生成:  项目: ClipBoard, 配置: Debug Win32 ------
1>  TestWebServer.cpp
1>stdsoap2.obj : error LNK2001: 无法解析的外部符号 _namespaces
1>D:\MyCode\SpasvoProc\Output\Debug\ClipBoard.exe : fatal error LNK1120: 1 个无法解析的外部命令
========== 生成:  成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
百度一下

在工程中添加 WITH_NONAMESPACES宏//运行时会出错

#include "soap.nsmap"

编译通过

源文件中添加代码

#include "TestWebServer.h"
#include "soapStub.h"
#include "soap.nsmap"SOAP_FMAC5 int SOAP_FMAC6 plus(struct soap*, int num_1, int num_2, int *sum)
{*sum = num_1 + num_2;printf("sum = %d", sum);return SOAP_OK;
}int main()
{struct soap math_service;soap_init(&math_service);if (soap_bind(&math_service, NULL, 8696, 0) == SOAP_ERR){printf("%s", "bind false\n");return -1;}printf("%s", "start server .....\n");while (true){int client = (int)soap_accept(&math_service);if (client < 0){printf("%s", "accept client false!");return -2;}printf("%s", "connect success\n");soap_serve(&math_service);soap_end(&math_service);}return 0;
}

运行之后浏览器输入http://localhost:8696/

显示

客户端新建一个工程项目,可以添加服务器生成的文件,也可以重新生成,

在客户端源文件中添加代码

#include "soap.nsmap"
#include "soapStub.h"
#include <stdlib.h>int main()
{struct soap math_client;soap_init(&math_client);int sum = 0;const char *p_webservice = "http://127.0.0.1:8696";soap_call_plus(&math_client, p_webservice, "", 60, 30, &sum);if (math_client.error){soap_print_fault(&math_client, stderr);return -1;}printf("webService : 60 + 30 = %d", sum);soap_end(&math_client);soap_done(&math_client);getchar();return 1;
}

运行结果

客户端:

服务器端:

在会遇到中文乱码的情况下,typename.dat加上xsd::string = std::wstring | wchar_t*

Couldn't find a matching Java operation for WSDD operation

webService 函数名小写



vc 调用webservice相关推荐

  1. VC++使用Soap ToolKit3.0调用WebService接口

    由于项目需要,需要实现VC调用WebService接口,之前没接触过这个,所以花了一天找了点资料,并自己编写了demo. 1. 首先看了Soap相关资料,见http://www.w3school.co ...

  2. java 调用webservice的各种方法总结

    http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.html 现在webservice加xml技术已经逐渐成熟,但要真正要用起 ...

  3. xml提示无法连接到远程服务器,异步调用WebService时,如何捕捉“无法连接远程服务器”异常...

    在winform窗体中调用webservice,过程如下: ①Form1中弹出Form2 Form2 form2 = new Form2(); form2.ShowDialoag(); ②Form2中 ...

  4. 在Android中使用Android Ksoap2调用WebService

    一.WebService介绍 WebService是基于SOAP协议可实现web服务器与web服务器之间的通信,因采用SOAP协议传送XML数据具有平台无关性,也是成为解决异构平台之间通信的重要解决方 ...

  5. Javascript+xmlhttp调用Webservice

    1.  创建webservice,为了免于落俗我稍稍修改了创建webserice的默认webmethod.^_^ using System; using System.Web; using Syste ...

  6. [转]几种调用WebService的方法

    1.  在JavaScript中调用WebService  1<script language="javascript">  2function PostRequest ...

  7. java ee webservice_javaEE调用webservice总结【利用WSDL】(转载)

    一.MyEclipse利用网上公开发布WSDL文件,创建WebService Client,进行调用WebService: 1.  打开MyEclipse,新建一个Web Project;然后新建 一 ...

  8. 调用webservice接口,数据不回滚问题

    调用webservice接口,数据不回滚问题 使用cxf+spring框架开发webservice接口,在开发一个具有保存数据的接口功能时,如果数据发生了异常,对service层无论使用了xml配置声 ...

  9. Android使用ksoap2-android调用WebService学习

    之前主要做客户端UI交互,很少处理数据和接触服务端,但现在的移动设备根本不可能离得开网络连接,数据的交换.最近学习的是在android端如何去调用远程WebService,都说WebService是一 ...

最新文章

  1. Tensorflow CIFAR-10训练例子报错解决
  2. 大数据能力提升项目| 学生成果展系列之二
  3. WebAssembly + Dapr = 下一代云原生运行时?
  4. js 日期控件laydate使用
  5. 【转】Delphi7程序调用C#写的DLL解决办法
  6. 《Python核心编程》笔记 基础
  7. 搜索。深搜学习。深度优先搜索之数字全排列。nyoj,组合数
  8. 《大型网站技术架构》学习笔记
  9. win7 旗舰版系统激活方法
  10. Type-C PD协议取电SINK受电端9V12V15V20V
  11. 计算机速成课 第二集 电子计算机
  12. Kubernetes运维之使用Prometheus全方位监控K8S
  13. rollup打包工具
  14. 计算机排版打字操作,五笔字型与计算机排版培训教程2版 第9章 打字与排版的首选—Word 2007.ppt...
  15. 杰理之汤姆猫录音变声功能参考【篇】
  16. 钟站壤赴梅拱厩沼泊叶
  17. 关于Contiguous()方法
  18. 干货丨从冷战到深度学习:一篇图文并茂的机器翻译史
  19. 数字集成电路设计-7-一个简单cpu的设计,实现,仿真与综合
  20. C++描述 LeetCode 485. 最大连续1的个数

热门文章

  1. 跑步用app轨迹画得比较准确的居然是“咕咚”
  2. 给有从事软件研发想法的在校大学生的一丝建议
  3. 十招挑出皮薄味甜的西瓜
  4. java 8 把list中对象的属性转成list
  5. 关爱中老年健康,践行康养华夏,中老年春晚《康养华夏》栏目启动大会在广州盛大举行
  6. Object.entries()方法的使用和实现
  7. 皇甫懒懒 Java 学习笔记 第一章
  8. 您知道Linux下C语言编程的一些注意事项吗_教育中国
  9. linux iio设备
  10. 魅族的云相册能克隆到华为手机吗_魅族云服务如何导出导入 换手机flyme云导出相册...