您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:273 来源:vckbase.com

本文章共2260字,分2页,当前第1页,快速翻页:
 

在VC中调用 WebService (非托管)

作者:eRay Jiang

下载源代码

逆风者
一、使用Visual Studio.NET调用WebService

  很多次看到网友讨论VC中调用WebService的问题,其实在Visual Studio.Net(下称VS.NET)及其以后的版本中调用WebService已经变得相当简单。你所要做的只是“找到 WebService的发布地址”,然后将其引用添加到VC项目中即可。接下来VS.NET帮你生成的代理类,会帮你搞定一大堆的麻烦事,包括:网络调用、数据传递等等;什么SOAP啊、网络啊,你都可以不管。
 

二、托管还是非托管?

  对于VS.NET生成的C 代理类,很多人都认为必须使用托管代码,其实事实并非这样。VS.NET可以生成托管和非托管两个版本的代理类,至于要不要使用托管,那是你自己的选择。
  具体地说,对于使用托管的程序,VS.NET会生成基于托管类库的代理类;你可以在生成的代码中找到类的行:public System::Web::Services::Protocols::SoapHttpClientProtocol。对于不使用托管的程序,VS.NET会生成基于ATL的代码;你可以在生成的代码中找到类似的行:template <typename TClient = CSoapSocketClientT<> >。
我想,如果不是确实需要的话,大部份人会选择非托管的方式,因为这起码可以让我们的程序脱离.Net Framework运行。
 

三、动态设置WebService调用地址

  这也是网上讨论得比较多的一个问题,因为WebSercie的地址不可能一成不变,特别是在开发调试的时候。幸运的是,在两种版本的代理类中,都可以非常方便地在运行时设置WebService的地址。(具体做法参见实例)

四、程序示例(非托管)

  由于已经有文章详细讲述了 VC托管程序中调用 WebService 的过程,因此以下示例只描述非托管VC程中调用WebService的方法。

1、新建一个非托管的MFC应用程序,注意是非托管的,如下图(图1)


图1、建立非托管程序

完成后,查看VC项目属性,可以确认不使用托管


图2、查看是否使用托管

2、添加WebService引用
在VC项目名称上,单击右键,选择“添加Web引用”。如下图(图3):


图3、添加Web引用

在弹出的“添加Web引用”对话框中,填入WebSercie的引用地址, 然后点击“转到按钮”,可以看到WebService的提示页面。


图4、“添加Web引用”对话框

  点击页面上的“Service Description” 链接可以看到具体的WebMethod的声明。我的这个WebService示例中,只定义了一个Web方法。该方法接受一个字符串作为用户名,并返回一个字符串作为对用户的问候语。如下图所示:


图5、查看WebMethod原型

  在上图中填入“Web引用名”,然后点击“添加引用按钮”。(在非托管版的代理类中,这里填的“Web引用名”将没有任保实质性的作用,所以随便填入一个名字即可。但是在托管版的代理类中,“Web引用名”将成为代量类的命名空间) 。接下来,VS.NET将生成一个WebService的代理类,生成完后,会自动打开WebService.h头文件:

WebService.h并不是代理类,这个头文件其实是用于包含所有的代理类的头文件,你可以多添加几个“Web引用”试试。

3、浏览代理类

  我们不妨浏览一下生成的代理类,做到有个基本的了解。切换到“类视图”,可以看到一个“Debug”命名空间,全部展开,可以看到生成的代理类的全部成员:


图6、浏览生成的代码

4、调用示例

首先包含头文件,并打开命名空间
 

本文章更多内容1 - 2 - 下一页>>
相关文章

自动查找并删除VC生成的临时文件
一步步制作真彩工具条
如何定制浮动工具条
一个完善的ODBC数据库程序
一个简单的时钟程序
利用OpenGL实现动画效果
实现类似Excel和Visual C 里文件夹式样的标
深入浅出 CPropertySheet
对《一个简单的学生成绩管理系统》优化的一
在MFC中用正则表达式对窗体进行有效性验证
如何选中其他程序ListView控件中的某个Item
用C#语言实现http协议下的多线程文件传输
如何提取网页中所有链接
DCT快速变换
think window procedure
关于CEdit控件的透明 --作者:monsoon
创建分层窗口,实现图像渐变
关于调试时输出的字符串信息
SendMessage和PostMessage,total ordering
用udp协议通讯示例

相关评论


本文章所属分类:首页 VC++

  热门关键字: