Web服务中的异常处理(4)

 更新时间:2006年10月11日 00:00:00   作者:  

客户端的异常处理 这个部分,我们将看看在客户端怎样处理从Web服务中所抛出的异常。为了说明这个做法,我们来创建一个新项目CategoriesServiceClient。一旦项目被创建,就在默认的表单上添加一个命令按钮,并命名为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服务所产生的异常。因为Web服务所产生的异常都是SoapException形式的,所以调用Web服务的客户应用程序的代码应该被包含在try...catch块中,并且第一个catch块应该具有捕捉SoapException的处理器。让我们大致看看以上所示的代码。

首先创建一个Categories类的实例。然后传入所要求的XML字符串参数,调用Categories类的AddCategories方法。再后,我们让catch块处理Web服务所产生的异常。在这个代码块中,我们以消息提示框的方式显示异常的产生者。我们通过使用SoapException对象的Code属性来完成这个显示。如果异常是因为客户端的非法输入而产生的,那么Code属性被设置为Client。如果异常是因为Web服务代码(例如,据库服务器已经关闭)而产生的,则Code属性被设为Server。

然后,我们把包含在SoapException对象的Detail元素中的XML数据导入到一个XmlDocument对象中。类似于Web服务的代码,这里同样利用XmlNamespaceManager对象把命名空间与XmlDocument对象关联在一起。之后,取出包含在不同元素中的值,并把它们赋给本地变量。最后,使用消息提示框显示本地变量的值。 把它放在一起

至此,我们已经完成了客户应用程序,现在让我们运行测试它。如果运行客户程序,它将显示一个消息框(具有true值),那么则表明categories详细信息已经成功保存到数据库中。现在,从输入的XML数据中删除元素,运行客户程序。将会得到一个消息,表明异常的原因是客户程序,除此之外,还可以在SoapException对象中得到更多的异常信息。

正如前面所提到的那样,如果Web服务失败是由于服务器端的一些问题引起的,那么SoapException对象的Code属性应该被设置为Server。为了测试这个,修改Web服务中的连接字符串为一个无效值。现在,如果运行客户程序,将会得到一个表明异常的原因是Server的消息(该例中的Web服务)。

结论

本文中,我们已经了解到怎样使用SoapException对象来处理和传递异常给Web服务的客户端。我们还了解到SoapException对象是怎样利用SOAPfault编码(定义在SOAP规范中)来传递异常的。顺便,我们还讨论了处理客户端所产生的异常的步骤。虽然我们创建的应用的功能非常的简单,但是它给我们理解怎样抛出和处理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 的安装: 服务器环境: 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静态页面引入公共html文件(ssi服务器端指令详解)

    HTML静态页面引入公共html文件(ssi服务器端指令详解)

    今天为大家介绍一种在HTML静态文件中引用其它HTML静态文件的方法SSI的详细使用方法与指令介绍
    2018-04-04
  • Web服务器日志统计分析完全解决方案

    Web服务器日志统计分析完全解决方案

    请注意本文已刊载在《开放系统世界》2003年第二期,该文章版权属于该杂志所有,请勿随意转载,转载请保留该声明摘要:对于所有的ICP来说,除了保证网站稳定正常运行以外,一个重要的问题就是网站访问量的统计和分析报表,这对于了解和监控网站的运行状态,对提高各个网站的服务能力和服务水平是必不可少的。通过对Web服务器的日志文件进行分析和统计,能够有效掌握系统运行情况以及网站内容的受访问情况、加强对整个网站及其内容的维护与管理。本文对Web服务器日志分析的原理和技术进行讨论。
    2008-03-03
  • cnnic反相地址解析申请方法

    cnnic反相地址解析申请方法

    cnnic反相地址解析申请方法...
    2007-10-10
  • Dubbo本地开发技巧分享

    Dubbo本地开发技巧分享

    下面小编就为大家分享一篇Dubbo本地开发技巧。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    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
  • 虚拟服务器实现方法(动态均衡)

    虚拟服务器实现方法(动态均衡)

    虚拟服务器:对外它是单一的入口,对内有很多台计算机为它服务.对使用它的人来说,它是一台机器,有单一的入口点.具体的实现技术包括两种: 应用层的虚拟服务器,网络层的虚拟服务器.
    2008-03-03

最新评论