当前位置: 首页 > news >正文

VC2010及以后版本调用WebService接口的方法

近日在项目中需要频繁调用一个webservice接口,以达到增加数据做性能测试的目的。最开始想的是直接用LR调用20W次,结果在跑的时候发现LR11版本和12版本均会出现调用几百次后内存崩溃的情况,且单线程运行速度很慢,于是就考虑使用VC多线程来调用此接口的办法。
兴冲冲的打开VC2015,百度之后基本上介绍的方法都是直接添加服务引用(WebReference),但是突然发现VC2015的引用页面根本就没有服务引用,不死心,分别试了VC2010/2013,均发现没有(最新的VC2017);最后在VC2005上发现了此引用按钮,测试后可以再2005上引入webservice接口。
那么在VC2005之后,没有服务器引用的情况下,如何调用webservice接口接口呢?经过研究后发现,原来Visual Studio 2008以及以后版本中,微软停止了非托管C++的直接WebService引用。ATL Server代码已经托管到开源网站上,我们可以找到ATL Server的源代码,编译出Sproxy.exe,这个工具可以根据wsdl文件来生成非托管的代理类。
具体方法如下:

1.下载ATL_Server源代码,编译代码中的SProxy工程形成sproxy.exe。代码下载地址为:http://atlserver.codeplex.com/,需要注意的是,此工程需要使用VC2005打开。
2.将下载好的ATL_Server源代码中的include文件夹完整的拷贝到目前使用版本的VC的include文件夹中,例如:VC2015对应的文件夹为:\Microsoft Visual Studio 14.0\VC\atlmfc\include。
3.浏览器访问需要调用的webservice接口的WSDL页面,将整个页面另存为xxx.wsdl,如:webservice.wsdl。而后将此文件和sproxy.exe放置在同一文件夹下面。
4.使用如下命令行:sproxy.exe /wsdl webservice.wsdl ;就会在当前运行cmd的目录下生成webservice.h文件。
5.直接#include此文件和using namespace 就好了。

 #include "I.h"
 using namespace I;
 ........
 CI  I_WebService;
 I_WebService.YZ_ReportEinCheckingResult();//接具体的调用方法

PS:在编译的时候可能会遇到找不到dbgautoattach.h此头文件的问题,此文件包含在VC2005的VC\include下面,将此拷贝到VC2015的VC\include下面即可解决此问题。
PS2:编译中可能还会出现很多莫名其妙的错误,记得工程设置 否 (/sdl-)

相关文章:

  • 浅谈SDI接口
  • LoadRunner参数从数据库取值解决总条数100的限制
  • Windows服务器高并发处理IOCP(完成端口)详细说明
  • Advanced Installer 数据库连接字段参数和返回参数
  • CentOS7下解决ifconfig command not found的办法
  • WEB和主机漏洞处理总结
  • LoadRunner11 回放日志和View tree中的中文乱码问题解决办法
  • Linux 下磁盘和CPU、内存、网络监控工具
  • 有关蓝牙耳机和蓝牙音频的那点事儿
  • VMware vSphere
  • Vmware Vcenter6.5 全新安装及群集配置介绍
  • CentOS7 升级Openssl的办法
  • 一款针对百某盘的神器
  • HDMI 2.1
  • 从XP到WIN10,各个系统版本自带 .NET版本整理
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【node学习】协程
  • 【面试系列】之二:关于js原型
  • 2017 前端面试准备 - 收藏集 - 掘金
  • ESLint简单操作
  • in typeof instanceof ===这些运算符有什么作用
  • Mybatis初体验
  • mysql 5.6 原生Online DDL解析
  • MySQL几个简单SQL的优化
  • PHP的Ev教程三(Periodic watcher)
  • python学习笔记 - ThreadLocal
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微服务框架lagom
  • 携程小程序初体验
  • 用element的upload组件实现多图片上传和压缩
  • 《码出高效》学习笔记与书中错误记录
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 容器镜像
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​io --- 处理流的核心工具​
  • ​如何在iOS手机上查看应用日志
  • %check_box% in rails :coditions={:has_many , :through}
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (3)nginx 配置(nginx.conf)
  • (4)Elastix图像配准:3D图像
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (超详细)语音信号处理之特征提取
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (转) ns2/nam与nam实现相关的文件
  • (转)linux下的时间函数使用
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉)JSON.stringify 语法实例讲解
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .NET 指南:抽象化实现的基类
  • .net(C#)中String.Format如何使用
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)