欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Web服務中的異常處理(4)

 更新時間:2006年10月11日 00:00:00   作者:  

客戶端的異常處理 這個部分,我們將看看在客戶端怎樣處理從Web服務中所拋出的異常。為了說明這個做法,我們來創(chuàng)建一個新項目CategoriesServiceClient。一旦項目被創(chuàng)建,就在默認的表單上添加一個命令按鈕,并命名為btnInvoke。因為需要在客戶端引用Web服務,所以在項目CategoriesService中添加一個WebReference??梢酝ㄟ^Project->AddReference菜單選項來完成添加。然后修改命令按鈕的Click事件,如下所示。

privatevoidbtnInvoke_Click(objectsender,System.EventArgse)

{

try

{

Categoriescat=newCategories();

MessageBox.Show(cat.AddCategories(" XmlNamespaceManagernsManager=new

XmlNamespaceManager(doc.NameTable);

//AddthenamespacetotheNamespaceManager

nsManager.AddNamespace("errorNS",

"http://tempuri.org/CategoriesService");

XmlNodecategoryNode=

doc.DocumentElement.SelectSingleNode("errorNS:Error",

nsManager);

stringerrorNumber=

categoryNode.SelectSingleNode("errorNS:ErrorNumber",

nsManager).InnerText;

stringerrorMessage=
categoryNode.SelectSingleNode("errorNS:ErrorMessage",

nsManager).InnerText;

stringerrorSource=

categoryNode.SelectSingleNode("errorNS:ErrorSource",

nsManager).InnerText;

MessageBox.Show("ErrorNumberis"+errorNumber);

MessageBox.Show("ErrorMessageis"+errorMessage);

MessageBox.Show("ErrorSourceis"+errorSource);

} catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

客戶端需要處理Web服務所產(chǎn)生的異常。因為Web服務所產(chǎn)生的異常都是SoapException形式的,所以調(diào)用Web服務的客戶應用程序的代碼應該被包含在try...catch塊中,并且第一個catch塊應該具有捕捉SoapException的處理器。讓我們大致看看以上所示的代碼。

首先創(chuàng)建一個Categories類的實例。然后傳入所要求的XML字符串參數(shù),調(diào)用Categories類的AddCategories方法。再后,我們讓catch塊處理Web服務所產(chǎn)生的異常。在這個代碼塊中,我們以消息提示框的方式顯示異常的產(chǎn)生者。我們通過使用SoapException對象的Code屬性來完成這個顯示。如果異常是因為客戶端的非法輸入而產(chǎn)生的,那么Code屬性被設置為Client。如果異常是因為Web服務代碼(例如,據(jù)庫服務器已經(jīng)關閉)而產(chǎn)生的,則Code屬性被設為Server。

然后,我們把包含在SoapException對象的Detail元素中的XML數(shù)據(jù)導入到一個XmlDocument對象中。類似于Web服務的代碼,這里同樣利用XmlNamespaceManager對象把命名空間與XmlDocument對象關聯(lián)在一起。之后,取出包含在不同元素中的值,并把它們賦給本地變量。最后,使用消息提示框顯示本地變量的值。 把它放在一起

至此,我們已經(jīng)完成了客戶應用程序,現(xiàn)在讓我們運行測試它。如果運行客戶程序,它將顯示一個消息框(具有true值),那么則表明categories詳細信息已經(jīng)成功保存到數(shù)據(jù)庫中。現(xiàn)在,從輸入的XML數(shù)據(jù)中刪除元素,運行客戶程序。將會得到一個消息,表明異常的原因是客戶程序,除此之外,還可以在SoapException對象中得到更多的異常信息。

正如前面所提到的那樣,如果Web服務失敗是由于服務器端的一些問題引起的,那么SoapException對象的Code屬性應該被設置為Server。為了測試這個,修改Web服務中的連接字符串為一個無效值?,F(xiàn)在,如果運行客戶程序,將會得到一個表明異常的原因是Server的消息(該例中的Web服務)。

結(jié)論

本文中,我們已經(jīng)了解到怎樣使用SoapException對象來處理和傳遞異常給Web服務的客戶端。我們還了解到SoapException對象是怎樣利用SOAPfault編碼(定義在SOAP規(guī)范中)來傳遞異常的。順便,我們還討論了處理客戶端所產(chǎn)生的異常的步驟。雖然我們創(chuàng)建的應用的功能非常的簡單,但是它給我們理解怎樣拋出和處理Web服務中的異常提供了一個堅實的基礎.
(出處:PConline)

相關文章

  • tomcat 5.0 + apache 2.0 完全安裝步驟詳解

    tomcat 5.0 + apache 2.0 完全安裝步驟詳解

    Apache httpd-2.0.47 + Tomcat jakarta-tomcat-4.1.24 + jk2 + php-4.3.3 的安裝: 服務器環(huán)境: RedHat Linux 8.0 J2sdk1.4.1_02 Tomcat 4.1.12 binary Apache 2.0.47 built from source jk2 connector source from jakarta.apache.org
    2008-03-03
  • HTML靜態(tài)頁面引入公共html文件(ssi服務器端指令詳解)

    HTML靜態(tài)頁面引入公共html文件(ssi服務器端指令詳解)

    今天為大家介紹一種在HTML靜態(tài)文件中引用其它HTML靜態(tài)文件的方法SSI的詳細使用方法與指令介紹
    2018-04-04
  • Web服務器日志統(tǒng)計分析完全解決方案

    Web服務器日志統(tǒng)計分析完全解決方案

    請注意本文已刊載在《開放系統(tǒng)世界》2003年第二期,該文章版權屬于該雜志所有,請勿隨意轉(zhuǎn)載,轉(zhuǎn)載請保留該聲明摘要:對于所有的ICP來說,除了保證網(wǎng)站穩(wěn)定正常運行以外,一個重要的問題就是網(wǎng)站訪問量的統(tǒng)計和分析報表,這對于了解和監(jiān)控網(wǎng)站的運行狀態(tài),對提高各個網(wǎng)站的服務能力和服務水平是必不可少的。通過對Web服務器的日志文件進行分析和統(tǒng)計,能夠有效掌握系統(tǒng)運行情況以及網(wǎng)站內(nèi)容的受訪問情況、加強對整個網(wǎng)站及其內(nèi)容的維護與管理。本文對Web服務器日志分析的原理和技術進行討論。
    2008-03-03
  • cnnic反相地址解析申請方法

    cnnic反相地址解析申請方法

    cnnic反相地址解析申請方法...
    2007-10-10
  • Dubbo本地開發(fā)技巧分享

    Dubbo本地開發(fā)技巧分享

    下面小編就為大家分享一篇Dubbo本地開發(fā)技巧。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 安裝配置MRTG-2.15.1的方法

    安裝配置MRTG-2.15.1的方法

    安裝配置MRTG-2.15.1的方法...
    2007-05-05
  • 花生殼與PcAnyWhere圖文教程 全攻略

    花生殼與PcAnyWhere圖文教程 全攻略

    花生殼與PcAnyWhere圖文教程 全攻略...
    2007-08-08
  • 在Win2k下建立虛擬Web主機

    在Win2k下建立虛擬Web主機

    在Win2k下建立虛擬Web主機...
    2006-10-10
  • 3389登陸記錄的清除方法

    3389登陸記錄的清除方法

    3389登陸記錄的清除方法...
    2007-11-11
  • 虛擬服務器實現(xiàn)方法(動態(tài)均衡)

    虛擬服務器實現(xiàn)方法(動態(tài)均衡)

    虛擬服務器:對外它是單一的入口,對內(nèi)有很多臺計算機為它服務.對使用它的人來說,它是一臺機器,有單一的入口點.具體的實現(xiàn)技術包括兩種: 應用層的虛擬服務器,網(wǎng)絡層的虛擬服務器.
    2008-03-03

最新評論