非托管com组件访问WebService
来源:互联网 发布:windows专业版激活工具 编辑:程序博客网 时间:2024/05/16 10:42
转载自:http://www.cnblogs.com/virtorld/archive/2012/11/16/2773395.html
在Visual Studio 2008以及以后版本中,微软停止了非托管C++的直接WebService引用。不过ATL Server代码已经托管到开源网站上,我们可以找到ATL Server的源代码,编译出Sproxy.exe,这个工具可以根据wsdl文件来生成非托管的代理类。这个代理类还需要配合一些头文件才能一起使用,这个相关的头文件都包含在ATL Server 的源代码内。
1. 准备sproxy.exe工具
在vs2008以前的版本,比如vs2005,本身就带有这个命令,但在vs2008版,已经把它给去除了。需要去http://atlserver.codeplex.com/下载ATL_Server源代码并编译产生sproxy.exe工具。(我自己生成的sproxy.exe 百度网盘:http://pan.baidu.com/s/1c2inuZu)
2. 生成代理类
启动cmd,进入sproxy.exe目录,执行sproxy.exe / wsdl http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
生成WeatherWebService.h文件
3. 建立工程
3.1、头文件
#include "iostream"
#include "WeatherWebService.h"
using namespace std;
3.2、代码示例
// 设置中文区域
setlocale(LC_ALL,"chs");
CoInitialize(NULL);
HRESULT hr = S_OK;
WeatherWebService::CWeatherWebServiceT<CSoapSocketClientT<>>* mWeatherWS = new WeatherWebService::CWeatherWebServiceT<CSoapSocketClientT<>>;
CComBSTR cityName = "北京";
BSTR* weatherOut;
int weatherSize;
// 获取天气
hr = mWeatherWS->getWeatherbyCityName(cityName,(BSTR**)&weatherOut,&weatherSize);
if(FAILED(hr))
{
cout<<"getWeather fail!"<<endl;
}
else
{
for (int i=0;i<weatherSize;i++)
{
wcout<<weatherOut[i]<<endl;
}
}
if (mWeatherWS != NULL)
delete mWeatherWS;
CoUninitialize();
- 非托管com组件访问WebService
- 使用非托管C++访问WEBSERVICE
- VS2008非托管c++访问webservice服务
- VS2008非托管c++访问webservice服务
- VS2008非托管c++访问webservice服务
- VS2008非托管c++访问webservice服务
- NET中使用非托管COM组件
- 什么是com组件?什么是托管代码和非托管代码
- 在非托管的c++代码中访问webservice服务
- 也谈VS2010非托管c++访问webservice服务
- VC2008及后续版本非托管C++访问webservice服务
- 在ASP.NET中使用非托管COM组件
- 在ASP.NET中使用非托管COM组件
- 在ASP.NET中使用非托管COM组件
- ASP.NET应用技巧:非托管COM组件的使用
- 在ASP.NET中使用非托管COM组件
- 关于Dll、Com组件、托管dll和非托管dll的理解
- 关于Dll、Com组件、托管dll和非托管dll的理解
- adb命令模拟按键事件 KeyCode
- CCF 201604-1
- grunt 压缩合并,压缩css和js
- 2017.03.13回顾
- 高通安卓调试LCD几方面总结(二)
- 非托管com组件访问WebService
- 后端技术杂谈
- SVM -支持向量机原理详解与实践之四
- [IOS]对视频、音频播放器添加缓冲进度条
- 解决公务车Bug:加油管理中导入加油费用时,提示:操作失败
- 养成1分钟速重构的敏捷开发习惯
- 滚动数组
- 希尔排序实现(Java)
- ViewGroup中含有子View的时候,子View会执行OnDraw()方法一次或两次。