本文转自: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. 一个人写的操作系统 - Sparrow OS

    一个人写的操作系统 - Sparrow OS 自己写一个操作系统,这是在过去的几年里我一直为之努力的目标,现在终于完成了. 缘起 自己动手写操作系统的动机最初来自于学习Linux遇到的困难. 我是一个 ...

  2. Extjs datefield 日历控件中文显示

    原版的日历控件选择的时候是英文的,不是中文的.后来将在extjs包中src下locale下ext-lang-zh_CN.js引用进来就汉化了

  3. Linux系统编程——进程间通信:命名管道(FIFO)

    命名管道的概述 无名管道,因为没有名字,仅仅能用于亲缘关系的进程间通信(很多其它详情.请看<无名管道>).为了克服这个缺点.提出了命名管道(FIFO).也叫有名管道.FIFO 文件. 命名 ...

  4. MySQL中进行树状所有子节点的查询

    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...

  5. [每日一题] OCP1z0-047 :2013-08-06 外表部――相关描述

    这道题目的知识点是要你熟悉外部表,怎么建外部表,外部表的数据是怎么存储的等等.请给出正确答案,并解释A B C D每项,最好用实验测试证明! 外部表的metadata(元数据)是存在数据库中,但它的数 ...

  6. linux C(hello world) 二维数组的练习

  7. MeetMe

  8. 【JS】defer / async

    引用JavaScript文件时的两个属性defer和async <script src="js1.js" defer></script><script ...

  9. C++面向对象的编程

    C++面向对象的编程 目录 对C++面向对象编程的理解 声明和定义类 声明和定义 构造函数 析构函数 静态成员和静态变量 类实例化对象 对象的浅复制和深复制 继承 单继承 多继承 虚函数 类模板 其他 ...

  10. 堆排序-C语言实现

    堆排序 堆排序是利用堆的性质进行的一种选择排序.下面先讨论一下堆. 1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]<=key[2i+1]&&Key[i ...