【php精品源码栏目提醒】:网学会员鉴于大家对php精品源码十分关注,论文会员在此为大家搜集整理了“【精品】在VC中调用 WebService - 其它资料”一文,供大家参考学习
在 VC 中 调 用 WebService 非 托 管 作 者 : e Ray Ji ang下载源代码一 、 使 用 Visual Studio.NET 调 用 Web Servi ce 很 多 次 看 到 网 友 讨 论 VC 中 调 用 WebService 的 问 题 , 其 实 在 VisualStudio.Net( 下 称 VS.NET)及 其 以 后 的 版 本 中 调 用 WebService 已 经 变 得 相 当 简单 。
你 所 要 做 的 只 是 “找 到 WebService 的 发 布 地 址 ”, 然 后 将 其 引 用 添 加 到 VC项 目 中 即 可 。
接 下 来 VS. NET 帮 你 生 成 的 代 理 类 , 会 帮 你 搞 定 一 大 堆 的 麻 烦 事 ,包 括 : 网 络 调 用 、 数 据 传 递 等 等 ; 什 么 SO AP 啊 、 网 络 啊 , 你 都 可 以 不 管 。
二、托管还是非托管? 对 于 VS. NET 生 成 的 C代 理 类 ,很 多 人 都 认 为 必 须 使 用 托 管 代 码 ,其 实 事实 并 非 这 样 。
VS.NET 可 以 生 成 托 管 和 非 托 管 两 个 版 本 的 代 理 类 , 至 于 要 不 要 使用托管,那是你自己的选择。
具 体 地 说 , 对 于 使 用 托 管 的 程 序 , VS. NET 会 生 成 基 于 托 管 类 库 的 代 理 类 ;你 可 以 在 生 成 的 代 码 中 找 到 类 的 行 : p ublicSystem::Web::Servi ces ::P rotocols::SoapHttp ClientProto col。
于 不 使 用 托 管 的 对程 序 , VS.NET 会 生 成 基 于 AT L 的 代 码 ; 你 可 以 在 生 成 的 代 码 中 找 到 类 似 的 行 :template 。
我 想 , 如果 不 是 确 实 需 要 的 话 , 大部 份 人 会 选 择 非 托 管 的 方 式 , 因为 这 起 码 可 以让 我 们 的 程 序 脱 离 .Net Framework 运 行 。
三 、 动 态 设 置 Web Servi ce 调 用 地 址 这 也 是 网 上 讨 论 得 比 较 多 的 一 个 问 题 , 因 为 Web Serci e 的 地 址 不 可 能 一 成不 变 ,特 别 是 在 开 发 调 试 的 时 候 。
幸 运 的 是 ,在 两 种 版 本 的 代 理 类 中 ,都 可 以 非常 方 便 地 在 运 行 时 设 置 WebService 的 地 址 。
( 具 体 做 法 参 见 实 例 )四、程序示例(非托管) 由 于 已 经 有 文 章 详 细 讲 述 了 VC 托 管 程 序 中 调 用 We bSe rvi ce 的 过 程 , 因此 以 下 示 例 只 描 述 非 托 管 VC 程 中 调 用 WebService 的 方 法 。
1 、 新 建 一 个 非 托 管 的 MFC 应 用 程 序 , 注 意 是 非 托 管 的 , 如 下 图 ( 图 1 )图 1、 建 立 非 托 管 程 序完 成 后 , 查 看 VC 项 目 属 性 , 可 以 确 认 不 使 用 托 管图 2、 查 看 是 否 使 用 托 管2、 添 加 Web Servi ce 引 用在 VC 项 目 名 称 上 , 单 击 右 键 , 选 择 “添 加 Web 引 用 ”。
如 下 图 ( 图 3 ) :图 3、 添 加 Web 引 用在 弹 出 的 “添 加 Web 引 用 ”对 话 框 中 , 入 Web Serci e 的 引 用 地 址 , 然 后 点 击 “转 填到 按 钮 ”, 可 以 看 到 WebService 的 提 示 页 面 。
图 4、 “添 加 Web 引 用 ”对 话 框 点 击 页 面 上 的 “Servi ce D escription” 链 接 可 以 看 到 具 体 的 Web Met hod 的 声明 。
我 的 这 个 Web Servi ce 示 例 中 ,只 定 义 了 一 个 Web 方 法 。
该 方 法 接 受 一 个 字符串作为用户名,并返回一个字符串作为对用户的问候语。
如下图所示:图 5、 查 看 Web Metho d 原 型 在 上 图 中 填 入 “Web 引 用 名 ”,然 后 点 击 “添 加 引 用 按 钮 ”。
(在 非 托 管 版 的 代理 类 中 ,这 里 填 的 “Web 引 用 名 ”将 没 有 任 保 实 质 性 的 作 用 ,所 以 随 便 填 入 一 个 名字 即 可 。
但是 在 托 管 版 的 代 理 类 中 ,“Web 引 用 名 ”将 成 为 代 量 类 的 命 名 空 间 ) 。
接 下 来 , VS. NET 将 生 成 一 个 Web Servi ce 的 代 理 类 , 生 成 完 后 , 会 自 动 打 开WebService.h 头 文 件 :WebService.h 并 不 是 代 理 类 , 这 个 头 文 件 其 实 是 用 于 包 含 所 有 的 代 理 类 的 头 文