九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
在VC中調(diào)用 WebService

                                                  在VC中調(diào)用 WebService

      一、什么是 WebService ?

WebService 其實就是一個基于網(wǎng)絡(luò)的應(yīng)用程序,它向外部程序提供一定的調(diào)用接口。外部(遠程)的程序,可以經(jīng)由Web對其進行調(diào)用。

二、 WebService 的特性:

1.由于 WebService 經(jīng)由web服務(wù)器發(fā)布,所以比DCOM而言,可以順利穿過防火墻。這也是 WebService 的優(yōu)點之一,可以說, WebService ,為分布 式應(yīng)用的開發(fā),提供了一個很好的平臺。

2.對 WebService 的調(diào)用,是通過SOAP協(xié)議進行的。簡單對象訪問協(xié)議(SOAP)提供了標(biāo)準(zhǔn)的遠程過程調(diào)用(RPC)方法來調(diào)用Web service。 而SOAP也是基于XML和XSD的,XML是SOAP的數(shù)據(jù)編碼方式,因此,對 WebService 的調(diào)用也可以是跨平臺的。、

三、怎樣調(diào)用 WebService ?

Visual Studio.NET 內(nèi)建提供了對 WebService 的調(diào)用。在VC.NET中,調(diào)用 WebService 只需要簡單的幾個步驟即可。只要找到 WebService 的發(fā)布 地址,將地址引入到VC工程中。這時,編譯器會預(yù)先編譯一次,自動生成和 WebService 相關(guān)的頭文件(也可以叫Web代理文件) WebService .h。 在你的程序中,包含 WebService .h然后生成相關(guān)的對象,就可以對遠程的 WebService 進行調(diào)用了。

為演示怎樣調(diào)用 WebService ,我們用網(wǎng)上一個已經(jīng)發(fā)布的 WebService ,名字叫TranslateService,其功能是對多種語言進行互相翻譯。 這個 WebService 的地址如下: http://www.WebServicex.net/TranslateService.asmx

四、程序示例

1.基于控制臺的托管程序示例

下面,我們先介紹VC.net中,基于控制臺的托管程序,調(diào)用 WebService 的例子:

啟動Visual Studio.NET 2003,新建一個Visual C++項目,類型選擇為基于.NET的托管控制臺應(yīng)用。然后,引入 WebService 到工程,在解決方案 的項目名稱上,單擊右鍵,選擇“添加Web引用”。如下圖(圖1):

 

圖1 添加 WebService 引用到工程中

填入 WebService 的地址,然后點擊”轉(zhuǎn)到”按鈕。 WebService 的相關(guān)細節(jié),會被顯示在下面。Web引用名,可以采用默認的名字,也可以自己設(shè)置 一個,在這里,我們起名叫TService。然后點擊“添加引用”(圖2),編譯器自動生成TService.h以及 WebService .h。在 WebService .h里面已經(jīng)包含了 TService.h。在工程的代碼中,我們直接包含頭文件 WebService .h即可。

 

圖2 添加 WebService

TService.h是由編譯器自動生成的,打開文件,我們可以看到,在命名空間TService中,編譯器為我們自動封裝了一個叫TranslateService的托管 類,以及一個名字叫Language的枚舉類型。

Language類型在這個 WebService 中,用來描述翻譯語言的類型,比如:

EnglishTOChinese(英語到中文)

ChineseTOEnglish(中文到英語)

EnglishTOGerman (英語到德語)

EnglishTOFrench (英語到法語)

等等……

在測試程序中,我們選擇英語到中文的形式。
#include "stdafx.h"#include " WebService .h"http://包含 WebService .h頭文件到程序中#using using namespace System;
using namespace TService;
//使用TService的命名空間int _tmain(){ String *str=new String(S"Hello,world!");
String *strResult;
TranslateService *pService=new TranslateService;
//建立遠程 WebService 對象 Language Lan=Language::EnglishTOChinese;
//設(shè)置翻譯類型 strResult=pService->Translate(Lan,str);
//調(diào)用 WebService Console::WriteLine(str);
Console::WriteLine(strResult);
//輸出結(jié)果 return 0;}

程序結(jié)果如下:(圖3)

 

2.基于MFC的程序示例

在MFC程序中,一樣可以調(diào)用 WebService ,我們可以建立一個簡單的基于對話框的MFC程序,工程名字為TranslateMFC。由于需要使用托管類型,所以 在編譯器設(shè)置里面,需要打開/clr開關(guān)。(圖4)選擇項目—TranslateMFC屬性,打開項目的屬性頁,在常規(guī),下面的使用托管擴展選項,將其選擇為“是”。 這樣,我們的項目就支持托管了C++擴展了。

 

圖4 在工程屬性打開clr開關(guān)

和上一個例子的方法一樣,引用 WebService 到工程,創(chuàng)建 WebService 對象,然后調(diào)用 WebService 。不過在MFC中,我們?nèi)绻苯佑胣ew來創(chuàng)建 WebService 對象的時候,編譯器會報錯(如下圖)這是為什么呢?

 

圖5 編譯產(chǎn)生的C3828錯誤

為了跟蹤內(nèi)存的使用情況,在 MFC 調(diào)試版本中使用時 MFC 重定義 new 運算符。由于此重定義的緣故,會在 MFC 應(yīng)用程序中創(chuàng)建托管類的實例,從而導(dǎo)致錯誤。在將現(xiàn)有 MFC 代碼移植到公共語言運行庫時通常會發(fā)生這種情況。對于發(fā)布版本不會發(fā)生該錯誤,這是因為 MFC 不重定義 new 運算符。在以下示例中,放置在 .cpp 文件中的托管代碼創(chuàng)建 String 類的一個實例。這將導(dǎo)致在 MFC 應(yīng)用程序調(diào)試版本中進行編譯時發(fā)生C3828編譯器錯誤。若要避免該錯誤,可在創(chuàng)建托管類型實例前,使用#undef 和 push_macro指令暫時取消定義 new 運算符。在最后一行托管代碼的后面,使用pop_macro 還原先前的 new 運算符定義。示例代碼如下:(圖6)

 

由于此 WebService 支持30多中語言類型的轉(zhuǎn)換,在這里,為示例簡單,我只保留了幾門語言的轉(zhuǎn)換功能。其他的語言,只需要判斷的時候,加入不同 Language枚舉類型即可。

下面是程序運行的結(jié)果演示:

 

圖7 MFC程序運行界面

 

圖7 英文翻譯為中文

 

圖8 英文翻譯為日文

 

圖9 英文翻譯為法文

五、結(jié)束語

通過以上的例子,我們看到了 WebService 為構(gòu)建分布式應(yīng)用,提供了強大的功能支持。

更多的有關(guān) WebService 的問題,請訪問http://www.microsoft.com/china/MSDN/library/ WebService s獲取更多的信息

補充:該程序的運行,需要.NET FrameWork的支持。

 
 
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
vc file
vc調(diào)試適合入門
使MFC變漂亮二:MFC與HTML交互示例
VS2010/MFC編程入門之前言
C 編程雜談之一:編譯器
總體上說,是c++ builder勝于VC++,DELPHI是最好,看看下面就知道了
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服