本文转自:http://www.cnblogs.com/zhaozhan/archive/2010/10/25/1860837.html

Web Services使用out参数,在SOAP协议中会跟返回值一样作为SOAP响应的内容返回。

Web Services定义:

 1:  public class WebService1 : System.Web.Services.WebService
 2:  {
 3:      [WebMethod]
 4:      public string HelloWorld(out int outParamInt,out TestClass outParamObject)
 5:      {
 6:          outParamInt = 10;
 7:          outParamObject = new TestClass() { ID=1,Name="XX"};
 8:          return "Hello World";
 9:      }
10:  }
11:   
12:  public class TestClass
13:  {
14:      public int ID{get;set;}
15:      public string Name{get;set;}
16:  }
17:   

定义两个out参数:一个int,一个复杂类型的。生成的SOAP:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<HelloWorldResponse xmlns="http://tempuri.org/">
<HelloWorldResult>string</HelloWorldResult>
<outParamInt>int</outParamInt>
<outParamObject>
<ID>int</ID>
<Name>string</Name>
</outParamObject>
</HelloWorldResponse>
</soap:Body>
</soap:Envelope>

客户端的使用,生成的客户端代码:

1:  public string HelloWorld(out int outParamInt, out Client.localhost.TestClass outParamObject) {
2:      Client.localhost.HelloWorldRequest inValue = new Client.localhost.HelloWorldRequest();
3:      inValue.Body = new Client.localhost.HelloWorldRequestBody();
4:      Client.localhost.HelloWorldResponse retVal = ((Client.localhost.WebService1Soap)(this)).HelloWorld(inValue);
5:      outParamInt = retVal.Body.outParamInt;
6:      outParamObject = retVal.Body.outParamObject;
7:      return retVal.Body.HelloWorldResult;
8:  }
9:   

测试代码:

1:  static void Main(string[] args)
2:  {
3:      localhost.WebService1SoapClient c = new localhost.WebService1SoapClient();
4:      localhost.TestClass testClass1;
5:      int i;
6:      c.HelloWorld(out i,out testClass1);
7:  }
8:   

对于其他的客户端,可以跟返回值一样获取out参数。如Flex:

Flex测试代码:

 1:  <?xml version="1.0" encoding="utf-8"?>
 2:  <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
 3:                 xmlns:s="library://ns.adobe.com/flex/spark" 
 4:                 xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
 5:                 creationComplete="app_creationCompleteHandler(event)" >
 6:  <fx:Declarations>
 7:  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 8:  <s:WebService id="MyService" wsdl="http://localhost:1552/WebService1.asmx?WSDL">
 9:  <s:operation name="HelloWorld" result="onResult(event)"/>
10:          </s:WebService>
11:  </fx:Declarations>
12:      <fx:Script>
13:  <![CDATA[
14:              import mx.events.FlexEvent;
15:              import mx.rpc.events.ResultEvent;
16:   
17:              private function onResult(evnet:ResultEvent):void
18:  {
19:  
20:              }
21:  protected function app_creationCompleteHandler(event:FlexEvent):void
22:  {
23:                  MyService.HelloWorld();
24:              }
25:  
26:           ]]>
27:  </fx:Script>
28:  </s:Application>

跟踪onResult的event的result:

[转]Web Services使用out参数的更多相关文章

  1. 跟我一起学WCF(3)——利用Web Services开发分布式应用

    一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...

  2. 利用Web Services开发分布式应用

    一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...

  3. .NET RESTful Web Services入门

    很早之前看到过RESTful Web Services,并未在意,也没找相关资料进行学习.今天偶尔有一机会,就找了点资料进行研究,发现RESTful真是“简约而不简单”.下面用示例来说明: 1 项目结 ...

  4. 分分钟带你玩转 Web Services

    当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来. 毕竟是多家不同的公司的产品,研发开发语言.采用技术框架基本上是百花齐放. 怎样让自家系统提供的服务具有跨平台.跨语言.跨各种防 ...

  5. Jersey the RESTful Web Services in Java

    Jersey 是一个JAX-RS的实现, JAX-RS即Java API for RESTful Web Services, 支持按照表述性状态转移(REST)架构风格创建Web服务. REST 中最 ...

  6. 使用 Spring 3 来创建 RESTful Web Services

    来源于:https://www.ibm.com/developerworks/cn/web/wa-spring3webserv/ 在 Java™ 中,您可以使用以下几种方法来创建 RESTful We ...

  7. 利用WSCF进行契约先行的Web Services开发

    http://www.cnblogs.com/goody9807/archive/2007/06/05/772107.html 什么是契约先行(Contract-First)? 如果说一个新的软件开发 ...

  8. Web Services 中XML、SOAP和WSDL的一些必要知识

    Web Services 是由xml来定义数据格式的,通过SOAP协议在各个系统平台中传输,那么接下来讨论下SOAP和WSDL的各自作用. SOAP和WSDL对Web Service.WCF进行深入了 ...

  9. 就是这么简单!使用Rest-assured 测试Restful Web Services

    使用 Rest-assured 测试 Restful Web Services 转载注明出处: http://www.cnblogs.com/wade-xu/p/4298819.html 这里向大家介 ...

随机推荐

  1. 安装、设置与启动MySql5.1.30绿色版的方法

    1.解压 mysql-noinstall-5.1.30-win32.zip(下载地址http://dev.mysql.com/downloads/mysql/5.1.html) 2.在 F 盘建立目录 ...

  2. 如何解除Windows XP的IIS连接数限制

    方法一: 开始 - 设置 - 控制面板 - 管理工具 - Internet 信息服务 - 默认网站 - 右键属性,把“网站”选项卡中“连接超时”下的复选框"保持HTTP连接"前的勾 ...

  3. 浏览器URL访问网页具体发生了什么

    [详细讲解:http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html]   ——浏览器输入URL ——DNS解析过程 解析域名,找到 ...

  4. [转]NTLM身份验证

    链接:http://www.360doc.com/content/12/0615/14/10216164_218320534.shtml 在允许的环境下,Kerberos是首选的认证方式.在这之前,W ...

  5. [转][IIS]发布网站,提示用户 'IIS APPPOOL\***' 登录失败。

    链接:http://www.cnblogs.com/tianguook/p/3881075.html 用户 'IIS APPPOOL\DefaultAppPool' 登录失败. 我在windows8中 ...

  6. 7. 泛化(Generalization)

    什么是泛化关系?用一个例子简单的说:假设A是B和C的父类,B.C具有公共类(父类)A,说明A是B.C的一般化(概括,也称泛化),B.C是A的特殊化. 在编程上,泛化关系(Generalization) ...

  7. python __init__.py

    python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...

  8. linux下的块设备驱动(一)

    块设备的驱动比字符设备的难,这是因为块设备的驱动和内核的联系进一步增大,但是同时块设备的访问的几个基本结构和字符还是有相似之处的. 有一句话必须记住:对于存储设备(硬盘~~带有机械的操作)而言,调整读 ...

  9. Codeforces Round #260 (Div. 1) C. Civilization 并查集,直径

    C. Civilization Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/probl ...

  10. C#调用Excel VBA宏

    近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有Excel中写VBA的,也有直接C#做的工具.有时需要在C#中执行Excel VBA宏,甚至有时还需要在执行了VBA宏之后,获取返回值再进 ...