本文转自: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. 递归模式学习(recursion)

    所谓递归,就是方法调用自身.对于递归模式来说,要有一个出口来让递归结束,避免出现死循环. 实例全排列: 从n中拿出m个元素进行排列,当n==m时为全排列. 利用递归就是:把n个元素轮流放入第一个位置, ...

  2. Fragment初步了解

    fragment 1.fragment解释: 从英文上来说fragment是碎片和片段的意思,这解释的是相当到位的,因为android中的fragment就像是碎片嵌在了Activity当中的,为构造 ...

  3. Java数据结构之树和二叉树

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  4. Windows转到linux中,文件乱码,文件编码转换

    最近,学习又重新开始Linux学习,所以一直在Centos中,昨天一朋友把他在Windows下写的C程序发给我,我欣然答应,本以为很快就能在我的Linux系统中运行起来.没想到出现了乱码,结果想把这个 ...

  5. C++学习笔记之运算符重载

    一.运算符重载基本知识 在前面的一篇博文 C++学习笔记之模板(1)——从函数重载到函数模板 中,介绍了函数重载的概念,定义及用法,函数重载(也被称之为函数多态)就是使用户能够定义多个名称相同但特征标 ...

  6. 编写你自己的单点登录(SSO)服务

    王昱 yuwang881@gmail.com   博客地址http://yuwang881.blog.sohu.com 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统其中.本文从 ...

  7. C#利用GDI+绘制旋转文字等效果

    C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经 ...

  8. C++ Code_ScrollBar

    主题 1.  ScrollBar的使用 2. 3. 4. 5.      属性 HScrollBar VScrollBar 直接拖拽1其中任意空间到对话框上面是,你一拖拽滚动条,它立即回到原始位置   ...

  9. Eclipse中R文件不能自动生成

       R文件不能自动生成主要是因为编译有错误,这时你想什么办法都是没有用的,clean, fix properties,都不是从根上解决问题.    R文件主要是自动生成资源文件的id的,里边静态子类 ...

  10. 关于OpenGL+GLSL深度贴图采样

    作者:Nin+.Lee 邮箱:lilei9110@gmail.com * 本文属原创,转载请注明出处. 在GLSL中,存在着sampler2D和sampler2DShadow两种2D贴图采样器.在对一 ...