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

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

Web Services定义:

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

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

  1. HTTP/1.1 200 OK
  2. Content-Type: text/xml; charset=utf-8
  3. Content-Length: length
  4.  
  5. <?xml version="1.0" encoding="utf-8"?>
  6. <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/">
  7. <soap:Body>
  8. <HelloWorldResponse xmlns="http://tempuri.org/">
  9. <HelloWorldResult>string</HelloWorldResult>
  10. <outParamInt>int</outParamInt>
  11. <outParamObject>
  12. <ID>int</ID>
  13. <Name>string</Name>
  14. </outParamObject>
  15. </HelloWorldResponse>
  16. </soap:Body>
  17. </soap:Envelope>

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

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

测试代码:

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

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

Flex测试代码:

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

    创建索引 db.table.ensureIndex({name:1}) 创建联合索引 db.table.ensureIndex({"table.name":1,"tabl ...

  2. 从零新建一个winform项目

    网站:https://community.devexpress.com/blogs/eaf/archive/2012/10/30/xaf-application-from-scratch.aspx

  3. 负载均衡LVS集群详解

     一.LB--负载均衡 在负载均衡集群中需要一个分发器,我们将其称之为Director,它位于多台服务器的上面的中间层,根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来进行响应请求,而其 ...

  4. memcached Logging

    For reasons now relegated to history, Spy has its own logging implementation. However, it is compati ...

  5. Drupal 7.31 SQL注入漏洞利用具体解释及EXP

     有意迟几天放出来这篇文章以及程序,只是看样子Drupal的这个洞没有引起多少重视,所以我也没有必要按着不发了,只是说实话这个洞威力挺大的.当然.这也是Drupal本身没有意料到的. 0x00 首 ...

  6. Android入门——电话拨号器和四种点击事件

    相对于HelloWorld来说,电话拨号器也是Android的一个入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 ...

  7. 小票打印机指令集封装(支持EPSON指令)

    最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧. 现在市场上的小票机基本都支持EPSON指令.指令集文档 对指令集进行了自己的封装,方便以后调用: package aheiziUti ...

  8. Java中怎样由枚举常量的ordinal值获得枚举常量对象

    Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { SPRING, SUMMER, AUTUMN, WINTER } 就定义了一个季节枚 ...

  9. 我的CMS心路历程,DNN And Umbraco

    在比较了众多CMS系统后,还是把焦点定在DNN和Umbraco两个系统上,这两个系统都可以使用UserControl扩展自己需要的功能. DNN的架构比较复杂,Module.Skin.Containe ...

  10. nicehair

    https://github.com/lanyj189/nicehair https://github.com/eltld/nicehair https://github.com/pepoc/Cust ...