本文转自: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. 网站在域名前面添加logo小图标

    如何给界面添加logo?就像百度的首页出现的图标. 1.准备一个ICO格式的小图标. 2.将制作好的ICO文件放到tomcat下的“D:\apache-tomcat-6.0.16\webapps\RO ...

  2. CentOS6 下Vim安装和配置

    1.系统只安装了vim-minimal,执行以下命令安装另外两个组件 yum install vim-common yum install vim-enhanced 2.安装ctags yum ins ...

  3. jQuery实现的瀑布流效果, 向下滚动即时加载内容

    下拉滚动条或鼠标滚轮滚动到页面底部时, 动态即时加载新内容. 后台用 json 传输数据, 示例程序中只写了示例数组.数据也只设置了两个属性, 需根据实际应用改写.   页面用了 ul li 做为容器 ...

  4. __declspec,__cdecl,__stdcall区别和作用

    _cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的 顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要 ...

  5. Overview and tips for using STM32F303

    www.stmcu.org/download/index.php?act=down&id=5264 IntroductionThe purpose of this application no ...

  6. How to get cocoapods work on Yosemite

    查看原文:http://leancodingnow.com/how-to-get-cocoapods-work-on-yosemite/ 今天升级了Mac OS X 10.10-Yosemite以后运 ...

  7. Qt技巧:QProcess与外部程序的调用

    项目做到一定阶段,常常须要在原来的project上调用外部程序. Qt为此提供了QProcess类,QProcess可用于完毕启动外部程序,并与之交互通信. 一.启动外部程序的两种方式: (1)一体式 ...

  8. JavaScript的角色巨变和Web技术的发展

    曾经JavaScript是职业程序员看不上眼的脚本语言,如今只有高级程序员才能驾驭它. JavaScript性质和地位的天翻地覆,正是Web技术飞速变化的印证. 最初职业程序员轻视JavaScript ...

  9. Android调用相机并将照片存储到sd卡上

    Android中实现拍照有两种方法,一种是调用系统自带的相机,然后使用其返回的照片数据. 还有一种是自己用Camera类和其他相关类实现相机功能,这种方法定制度比较高,洗染也比较复杂,一般平常的应用只 ...

  10. 32位Windows7上8G内存使用感受+xp 32位下使用8G内存 (转)

    32位Windows7上8G内存使用感受+xp 32位下使用8G内存 博客分类: Windows XPWindowsIE企业应用软件测试  我推荐做开发的朋友:赶快加入8G的行列吧....呵呵..超爽 ...