韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

用Visual C++創(chuàng)建SOAP客戶端應(yīng)用

用Visual C++創(chuàng)建SOAP客戶端應(yīng)用

更新時(shí)間:2022-10-18 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

Soap是一個(gè)在信息交換中使用得非常廣泛的協(xié)議,使用方便,并直接可與HTTP, SMTP等其它協(xié)議一起工作。本文討論如何使用Microsoft SOAP Tookit的C++來建立一個(gè)簡(jiǎn)單的SOAP客戶端應(yīng)用。
=========================================================
一、先決條件:
必須熟悉使用COM,特別要熟悉COM中的Smart Pointers。我通過導(dǎo)入方法將COM接口轉(zhuǎn)換成Smart Pointers。系統(tǒng)必須安裝了Microsoft SOAP Toolkit和Microsoft XML Parser。文末參考一節(jié)介紹如何下載工具箱。文末附件可下載本文源程序。



二、SOAP編程基礎(chǔ):
下面開始介紹一個(gè)簡(jiǎn)單SOAP應(yīng)用中所包含的類。在此之前,必需先導(dǎo)入所需的類型庫,然后程序才能夠使用SOAP的類。



導(dǎo)入類型庫:
SOAP中使用的對(duì)象和接口都在mssoap1.dll文件中。這個(gè)文件在安裝Microsoft SOAP Toolkit 2.0時(shí)生成,存在路徑:"C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll"。用#import將該文件導(dǎo)入到程序中。類型庫的內(nèi)容在導(dǎo)入時(shí)被轉(zhuǎn)換成COM smart pointers來描述COM接口。因?yàn)镾OAP完全依賴于XML,因此必需用Microsoft XML Parser來處理XML。Microsoft XML parser在msxml3.dll文件里。這個(gè)文件要在導(dǎo)入mssoap1.dll之前導(dǎo)入。



#import "msxml3.dll"



using namespace MSXML2;



#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll" \



exclude("IStream", "ISequentialStream", "_LARGE_INTEGER", \



"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")



using namespace MSSOAPLib;



上面這些代碼是編寫SOAP程序必需包含的。



建立SOAP客戶端應(yīng)用有以下三步驟:
1- 指定和連接Web服務(wù)器。
2- 準(zhǔn)備和發(fā)送消息。
3- 讀取服務(wù)端返回的信息。



下面是在基本SOAP客戶端要使用到的類:



1- SoapConnector:
在客戶/服務(wù)模式下,首先要做的事就是連接服務(wù)器。SoapConnector類執(zhí)行客戶端與服務(wù)端之間的消息傳送協(xié)議。 SoapConnector是一個(gè)抽象類,定義了協(xié)議執(zhí)行的接口。事實(shí)上, SoapConnector類不定義執(zhí)行某種特定的傳送協(xié)議,例如:MSMQ, MQ Series, SMTP 和 TCP/IP等。 為簡(jiǎn)便起見,本文只說明使用HTTP傳送協(xié)議,它是由Microsoft SOAP Toolkit 2.0中的HttpConnector 類來執(zhí)行的。



SoapConnector類使用步驟如下:
a) 創(chuàng)建SoapConnector類對(duì)象:
 ISoapConnectorPtr connector;
 Connector.CreateInstance(__uuidof(HttpConnector));



b) 指定Web服務(wù)器地址:
指定服務(wù)器,要做二件事:選擇HttpConnector的屬性和相應(yīng)的屬性值。本文示例選用EndPointURL屬性:
 Connector->Property ["EndPointURL"] = "some url pointing to web service";



以下是屬性選項(xiàng)說明(屬性名是大小寫敏感的):
AuthPassword:客戶口令
AuthUser:客戶名
EndPointURL :客戶URL
ProxyPassword:  代理(proxy)口令
ProxyPort :代理斷口
ProxyServer :代理服務(wù)器的IP地址或主機(jī)名
ProxyUser :代理用戶名
SoapAction:HTTP的抬頭值。這個(gè)屬性只使用于低級(jí)API。它將忽略SoapClient接口(高級(jí)API)中的ConnectorProperty屬性 。
SSLClientCertificateName:指定使用Secure Sockets Layer (SSL)加密協(xié)議。語法如下:
 [CURRENT_USER | LOCAL_MACHINE\[store-name\]]cert-name with the defaults being CURRENT_USER\MY (與Microsoft Internet Explorer用法相同)。
Timeout:HttpConnector的超時(shí)限制,以毫秒為單位。
UseProxy:定義是否使用代理(proxy)。缺省值為False。如果將這個(gè)屬性為真(True),又沒有設(shè)置上面的ProxyServer值,代理服務(wù)器將使用IE里的代理服務(wù)器。此時(shí)HttpConnector將不理會(huì)IE的"Bypass Proxy"(繞道)設(shè)置。
UseSSL:定義是否使用SSL(True 或 False)。此值設(shè)置為真時(shí),HttpConnector對(duì)象不管WSDL設(shè)置是HTTP或HTTPS都用SSL連接方式。若此值設(shè)置為非真,HttpConnector對(duì)象只在WSDL設(shè)置為HTTPS時(shí)才用SSL方式連接。

c) 與Web服務(wù)器連接:
 Connector->Connect();



d) 指定動(dòng)作:
Connector->Property ["SoapAction"] = "some uri";



e) 啟動(dòng)消息句柄:
必需在SoapSerializer(消息準(zhǔn)備函數(shù))之前先啟動(dòng)消息處理機(jī)制
Connector->BeginMessage();



在消息處理完畢之后,用EndMessage()函數(shù)將消息送往服務(wù)器。
.
.
[ 消息準(zhǔn)備代碼 ]
.
.
Connector->EndMessage();



以上就是與服務(wù)器連接的過程。下面介紹如何創(chuàng)建和準(zhǔn)備消息。



SoapSerializer:
用于建立送往服務(wù)器的SOAP消息。在與服務(wù)器通訊之前,SoapSerializer對(duì)象必需先與SoapConnector對(duì)象連接。SoapSerializer的初始化函數(shù)將建立這個(gè)內(nèi)部連接。初始化代入的參數(shù)是InputStream (數(shù)據(jù)流):
// 創(chuàng)建SoapSerializer對(duì)象,并用InputSTream進(jìn)行初始化。
 ISoapSerializerPtr Serializer;
 Serializer.CreateInstance(_uuidof(SoapSerializer));
 Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));



下面是SOAP請(qǐng)求代碼:



<SOAP: Envelope xmlns:SOAP="soap namespace">
<SOAP:Body>
<m:someMethodName xmlns:m="some namespace">
<someParameter> someParameterValue </someParameter>
<m:someMethodName>
</SOAP:Body>
</SOAP: Envelope>



SOAP請(qǐng)求被安放在標(biāo)記之中。<Envelope>是SOAP文件的主標(biāo)記。SOAP信息通常都安放在”信封“(Envelope)里。信封里的<Body>標(biāo)記中安放信息體,其中包含具體請(qǐng)求。在C++里,用相應(yīng)的方法來解釋這些標(biāo)記并定義有關(guān)的值。
下面的代碼說明如何使用這些方法:




Serializer->startEnvelope("SOAP","","");
// 開始處理SOAP消息。第一個(gè)參數(shù)是命名空間,缺省為SOAP-ENV。
// 第二個(gè)參數(shù)定義URI。第三個(gè)參數(shù)定義Serialzier->startBody("")函數(shù)的編碼方式。
// 開始處理<Body>元素,第一個(gè)參數(shù)是URI的編碼類型,缺省為NONE。



Serializer->startElement("someMethodName","","","m");
// 開始處理Body里的子元素。
// 第一個(gè)參數(shù)是元素名。第二個(gè)參數(shù)是URI。
// 第三個(gè)參數(shù)編碼類型。第四個(gè)參數(shù)是元素的命名空間。



Serializer->WriteString("someParameterValue")
// 寫入元素值



在上面的每個(gè)startXXX函數(shù)后都要又相應(yīng)的endXXX函數(shù)來結(jié)尾。消息做完之后,連接器就調(diào)用endMessage()方法將消息發(fā)送到服務(wù)器。



至此,我們已經(jīng)連接了服務(wù)器,制作了相應(yīng)的消息。最后一個(gè)步驟就是接收服務(wù)器回應(yīng)。



SoapReader:
讀取服務(wù)器返回的信息,將信息解析之后裝入DOM,為進(jìn)一步處理所用。下面是服務(wù)器返回的SOAP回應(yīng)信息:



<SOAP: Envelope xmlns:SOAP="soap namespace">
<SOAP:Body>
<m:someMethodNameResponse xmlns:m="some namespace">
<return> someResult </return>
<m:someMethodNameResponse>
</SOAP:Body>
</SOAP: Envelope>



使用OutputStream來讀取SoapReader對(duì)象中的信息。(OutputStream接收服務(wù)器返回的信息)。



// 創(chuàng)建SOAPReader對(duì)象,并連接到outputstream
 ISoapReaderPtr Reader;
 Reader.CreateInstance(_uuidof(SoapReader));
 Reader->Load(_variant_t((IUnknown*)Connector->OutputStream));
// load方法還可以用于加載XML文件或字符串



將回應(yīng)信息加載到SoapReader對(duì)象之后,就可以用它的RPCResult屬性來獲取結(jié)果。不過,But RPCResult并不直接返回結(jié)果,它返回<Body>的第一個(gè)實(shí)體元素,然后用text屬性讀取該元素屬性值:
Reader->RPCResult->text



三、舉例說明一個(gè)簡(jiǎn)單的SOAP客戶端應(yīng)用:
本文示例用www.xmethods.net做服務(wù)器。這個(gè)服務(wù)器指向Yahoo在線信息。
可以在http://www.xmethods.net/ve2/ViewListing.po?serviceid=156找到有關(guān)細(xì)節(jié)。
下面的代碼中要輸入一個(gè)參數(shù),即Yahoo的用戶ID。返回結(jié)果為0表示離線,1表示在線。
其他細(xì)節(jié)可參閱:http://www.allesta.net:51110/webservices/wsdl/YahooUserPingService.xml



四、參考:
The SOAP specification Simple Object Access Protocol (SOAP) 1.1 - W3C Note :
http://www.w3.org/TR/SOAP
Microsoft SOAP Toolkit Download :
http://download.microsoft.com/download/xml/soap/2.0/w98nt42kme/EN-US/SoapToolkit20.exe



五:本文示例的SOAP代碼:
#include <stdio.h>



#import "msxml3.dll"
using namespace MSXML2;



#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll" \
exclude("IStream", "ISequentialStream", "_LARGE_INTEGER", \
"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSSOAPLib;



void main()
{
   CoInitialize(NULL);



   ISoapSerializerPtr Serializer;
   ISoapReaderPtr Reader;
   ISoapConnectorPtr Connector;



   // 連接服務(wù)器
   Connector.CreateInstance(__uuidof(HttpConnector));
   Connector->Property["EndPointURL"] = "http://www.allesta.net:51110/webservices/soapx4/isuseronline.php";
   Connector->Connect();



   // 啟動(dòng)消息機(jī)制
   Connector->Property["SoapAction"] = "uri:allesta-YahooUserPing";
   Connector->BeginMessage();



   // 創(chuàng)建SoapSerializer對(duì)象
   Serializer.CreateInstance(__uuidof(SoapSerializer));



   // 與輸入流連接
   Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));



   // 制作SOAP信息
   Serializer->startEnvelope("","","");
   Serializer->startBody("");
   Serializer->startElement("isuseronline","uri:allesta-YahooUserPing","","m");
   Serializer->startElement("username","","","");
   Serializer->writeString("laghari78");
   Serializer->endElement();
   Serializer->endElement();
   Serializer->endBody();
   Serializer->endEnvelope();



   // 向服務(wù)器發(fā)送信息
   Connector->EndMessage();



   // 讀取回應(yīng)
   Reader.CreateInstance(__uuidof(SoapReader));



   // 連接輸出流
   Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");



   // 顯示結(jié)果
   printf("Answer: %s\n", (const char *)Reader->RPCResult->text);
     CoUninitialize();
}




本文附件



http://www.topxml.com/snippetcentral/snippetfiles/v20020425121357.zip

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
亚洲高清999| 久久久成人av| 国产黄色小视频| 老司机av网站| 国产成人亚洲精品| 国产精品一在线观看| 亚洲区在线播放| avtt亚洲| 超清福利视频| 777视频在线观看| 丰满熟女人妻一区二区三区| 一区二区自拍| 欧美激情精品久久久久| 国产成人综合视频| 国产伦精品一区二区三| 天海翼女教师无删减版电影| 亚洲每日更新| 天堂网一区二区| 91精品国偷自产在线电影| 久久人人97超碰人人澡爱香蕉| 亚洲成人精品电影在线观看| 最新亚洲视频| 在线精品视频免费播放| 最近日本中文字幕| 成人在线观看一区二区| 欧美性猛交丰臀xxxxx网站| brazzers在线观看| 两个人日本在线观看视频| 欧美日韩成人一区二区| 久久久久九九精品影院| 特黄aaaaaaaaa毛片免费视频| 国产亚洲精品久久久久久打不开| 啊v视频在线| 2024短剧网剧在线观看| 国产一区二区麻豆| 精品国产91久久久久久浪潮蜜月| 日韩xxx视频| 天堂一区在线观看| 国产剧情av麻豆香蕉精品| 精品欧美在线观看| 成熟丰满熟妇高潮xxxxx视频| 年轻的保姆91精品| 欧美在线观看视频一区二区三区| 精品1卡二卡三卡四卡老狼| 日韩在线免费观看视频| 欧美午夜精品久久久久免费视| 九九热在线视频免费观看| 欧美国产精品日韩| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产成人啪精品视频免费网| 六月丁香婷婷色狠狠久久| 美女国产在线| 国产精品白丝喷水在线观看| 中文另类视频| 亚洲欧美日韩国产精品| a级国产乱理论片在线观看99| 亚洲成人性视频| http;//www.99re视频| 在线观看免费污视频| 色婷婷av国产精品| 亚洲成人免费看| 欧美一级电影在线| 欧美精品一区二区三区很污很色的| 国产精品久久午夜夜伦鲁鲁| 欧美性猛片xxxxx免费中国| 韩国三级在线一区| 国产91aaa| 999国产视频| 1stkiss在线漫画| 影音先锋日韩精品| 2023国产精品| 欧美性生交xxxxx| 欧美一级视频在线| 免费在线观看的电影网站| 91精品久久久久久久久久| 国产美女在线精品免费观看| 亚洲 欧美 成人| 日本a在线观看| 亚洲高清一二三区| 亚洲欧美激情一区| 亚洲青青一区| 91免费视频国产| 日韩精品大片| 亚洲激情图片一区| 无码少妇一区二区三区芒果| 成人亚洲精品久久久久软件| 成人午夜免费电影| 国产一区二区片| 久久国产综合精品| 黄色动漫免费网站| 青青草国产在线播放| 国产精品社区| 九九久久99| 99精品欧美一区二区三区综合在线| 亚洲欧美日韩一区二区三区在线| 久本草在线中文字幕亚洲欧美| 狠狠色噜噜狠狠狠| 久久精品视频2| 亚洲第一欧美| 精品黑人一区二区三区在线观看| 在线观看免费黄色小视频| av线上观看| 欧美亚洲尤物久久| 亚洲精品中文字幕在线| 国内在线精品| 日本欧美国产在线| 秋霞成人午夜伦在线观看| 日韩高清有码在线| 欧美交换国产一区内射| 久久久国产精品入口麻豆| 久久99欧美| 国产精品一区二区av白丝下载| 中文字幕日本最新乱码视频| 国产精品小仙女| 亚洲www.| 国产精品一区二区三区四| 在线观看老湿视频福利| 欧美蜜桃一区二区三区| 日韩中文第一页| 久久av最新网址| 亚洲激情五月| 欧美日韩高清在线一区| 国产美女被下药99| 欧美亚洲综合另类| 亚洲国产综合视频在线观看| 懂色av一区二区三区| 国产又爽又黄无码无遮挡在线观看| 精品一区精品二区高清| 91在线观看污| 日操夜操天天操| 啊v在线视频| 稀缺小u女呦精品呦| 免费久久久久久久久| 成人欧美视频在线观看播放| 国产美女视频免费观看下载软件| 亚洲va韩国va欧美va| 久久久无码精品亚洲国产| 国产精品99久| 欧美日韩在线观看一区二区| 国产清纯白嫩初高中在线观看性色| 国产91色蝌蚪视频| 日韩一区二区三区国产| 国产欧美日韩综合精品一区二区| 欧洲杯什么时候开赛| 久久99精品久久久久久琪琪| 国产一级二级在线| 亚洲永久精品ww.7491进入| 亚洲国产私拍精品国模在线观看| 超碰中文字幕在线观看| www.五月婷| 中文av资源在线| 精品国产乱码久久久久久1区2匹| 国产毛片一区二区| 国内露脸中年夫妇交换精品| 久久www免费人成精品| 精品国产一区二区三区不卡蜜臂| 天天干天天色天天爽| 日韩欧美一区在线| 欧美一级免费大片| 国产福利一区二区三区视频| 精品一二三四| 欧美日韩亚洲国产精品| 亚洲成人手机在线观看| 亚洲欧洲精品一区二区三区| 九九久久久久99精品| 中文字幕区一区二区三| 日日噜噜夜夜狠狠视频| 亚洲尤物在线| 欧美国产综合一区二区| 天天躁日日躁狠狠躁欧美| 日韩激情av在线| 亚洲国产裸拍裸体视频在线观看乱了| 久久99久久99精品免费看小说| 人妻91麻豆一区二区三区| 国产91成人video| 国产精品亚洲欧美导航| 中文字幕一区二区三区四区不卡| 国产一区视频在线看| 成人在线手机视频| 中文字幕中文字幕一区二区| 免费久久一级欧美特大黄| japan高清日本乱xxxxx| 国产成人亚洲综合| 欧美亚洲视频一区二区| 亚洲午夜未删减在线观看| www.99在线| 激情欧美一区二区三区| 日韩精品最新在线观看| a级片在线观看免费| 亚洲自拍高清视频网站| 国产一区二区99| 成人欧美一区| 豆国产97在线 | 亚洲| 国产精品伦一区二区三区视频| 国产在视频线精品视频www666| 黄色一级片视频| 国产伦精品一区二区三区视频小说| 真实乱视频国产免费观看| 在线免费观看高清视频| 黑人巨大精品欧美一区二区| 亚洲精华国产欧美| 三上悠亚 电影| 国产精品国产高清国产| 国产喷白浆一区二区三区| 亚洲一区中文字幕在线| 国产精品视频一二| 国内揄拍国内精品久久| 亚洲日本一区二区三区在线| 国产精品91久久| 麻豆一区一区三区四区| 一区二区三区我不卡| 羞羞视频在线观看欧美| 视频一区视频二区国产精品| 亚洲成a人v欧美综合天堂麻豆| 久久成人国产精品| 久久婷婷五月综合色丁香| 日韩欧美中文字幕不卡| 97久久超碰国产精品| 亚洲最新免费视频| av黄色免费在线观看| 精品免费在线观看| 欧美精品做受xxx性少妇| 99re在线观看视频| 免费人成年激情视频在线观看| 亚洲欧洲日产国码av系列天堂| 国产免费一区二区三区在线观看| 全免费a级毛片| 超污网站在线观看| 日韩影片在线观看| 在线电影一区| 久久精品二区亚洲w码| 最新的欧美黄色| 欧美金发大战黑人最粗videos| 国产精品入口麻豆完整版| 最近中文字幕免费在线观看| 日本成人网址| 亚洲第一论坛sis| 国内爆初菊对白视频| 欧美三级电影精品| 超碰97人人人人人蜜桃| 久久亚洲综合网| 国产福利免费在线观看| 黄页网站在线播放| 麻豆一区在线观看| 一分钟免费观看视频播放www| 亚洲无码精品在线播放| 色婷五月综激情亚洲综合| 国产91精品久久久久久久网曝门| 国产精品久久久久久在线| 伊人久久综合97精品| 精品少妇一区二区三区在线播放| 色呦色呦色精品| 亚洲黄色在线免费观看| 色综合久久久久久久久| 黄色一级大片在线观看| 日韩一卡二卡三卡国产欧美| aaaaa黄色片| 亚洲深夜av| 精品亚洲综合| 免费欧美一级视频| 久久天堂av| 久久亚洲精品毛片| 亚洲美女淫视频| av高清在线观看| 亚洲黄色av| 亚洲第一页视频| 妖精视频在线观看免费| 五月婷婷丁香综合网| 欧美三级乱码| 97视频免费在线| 成人一区二区三区视频| 国产三级伦理在线| 污视频网站免费在线观看| 影音先锋5566中文源资源| 日韩精彩视频| 亚洲成人精品视频在线观看| 亚洲欧美日韩区| 91污片在线观看| 免费看涩涩视频| 91福利精品在线观看| 天堂网在线资源| av人人综合网| 亚洲人午夜精品天堂一二香蕉| 在线观看高清av| 欧美国产欧美亚州国产日韩mv天天看完整| 91精品国产自产观看在线| 99中文字幕| 亚洲视频久久| 久久精品国产成人| 日韩在线观看一区二区| 一级黄色片在线播放| 成人网av.com/| 欧美在线关看| 性欧美xxxx大乳国产app| 午夜在线视频观看日韩17c| 天堂在线视频免费观看| 欧美aaa视频| 亚洲午夜电影在线观看| 久久久精品五月天| 一区二区三区四区毛片| 久久99深爱久久99精品| 日韩欧美一区二区三区久久| 亚洲精品自拍视频在线观看| 99热com| 香蕉视频色在线观看| 偷偷www综合久久久久久久| 在线中文字幕-区二区三区四区| 亚洲少妇18p| 九九视频免费看| 无码人妻aⅴ一区二区三区有奶水| 国产69精品久久久久9999人| 亚洲成人偷拍自拍| 国产大片一区二区三区| 精品亚洲aⅴ在线观看| 久久精品亚洲精品国产欧美| 亚洲色图网站| 亚洲乱码av中文一区二区| 理论片在线观看理伦片| 日本一区二区在线观看视频| 神马午夜伦理不卡| 久久青青色综合| 色系列之999| 免费黄色网址网站| 9999精品成人免费毛片在线看| h片在线观看免费| 男人j桶女人的网站| 色先锋资源久久综合5566| 黄色视屏免费在线观看|