[转]Web Services使用out参数
本文转自: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参数的更多相关文章
- 跟我一起学WCF(3)——利用Web Services开发分布式应用
一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...
- 利用Web Services开发分布式应用
一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...
- .NET RESTful Web Services入门
很早之前看到过RESTful Web Services,并未在意,也没找相关资料进行学习.今天偶尔有一机会,就找了点资料进行研究,发现RESTful真是“简约而不简单”.下面用示例来说明: 1 项目结 ...
- 分分钟带你玩转 Web Services
当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来. 毕竟是多家不同的公司的产品,研发开发语言.采用技术框架基本上是百花齐放. 怎样让自家系统提供的服务具有跨平台.跨语言.跨各种防 ...
- Jersey the RESTful Web Services in Java
Jersey 是一个JAX-RS的实现, JAX-RS即Java API for RESTful Web Services, 支持按照表述性状态转移(REST)架构风格创建Web服务. REST 中最 ...
- 使用 Spring 3 来创建 RESTful Web Services
来源于:https://www.ibm.com/developerworks/cn/web/wa-spring3webserv/ 在 Java™ 中,您可以使用以下几种方法来创建 RESTful We ...
- 利用WSCF进行契约先行的Web Services开发
http://www.cnblogs.com/goody9807/archive/2007/06/05/772107.html 什么是契约先行(Contract-First)? 如果说一个新的软件开发 ...
- Web Services 中XML、SOAP和WSDL的一些必要知识
Web Services 是由xml来定义数据格式的,通过SOAP协议在各个系统平台中传输,那么接下来讨论下SOAP和WSDL的各自作用. SOAP和WSDL对Web Service.WCF进行深入了 ...
- 就是这么简单!使用Rest-assured 测试Restful Web Services
使用 Rest-assured 测试 Restful Web Services 转载注明出处: http://www.cnblogs.com/wade-xu/p/4298819.html 这里向大家介 ...
随机推荐
- SVN安装与使用
来自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html SVN服务器搭建和使用(一) Subversion是优秀的版 ...
- [GUI]界面开发类库-Ribbon风格 [转]
[GUI]界面开发类库 如果我们不十分清楚需要什么样的界面风格及如何实现,请按以下两个步骤操作: (1) 搞清楚这种风格叫什么名字 (2) 查现有的比较著名的GUI库是否已有相 ...
- Setting up Nutch 2.1 with MySQL to handle UTF-8
原文地址: http://nlp.solutions.asia/?p=180 These instructions assume Ubuntu 12.04 and Java 6 or 7 instal ...
- JS瀑布流布局模式(1)
在实际的项目中,偶尔会用到一种布局——瀑布流布局.瀑布流布局的特点是,在多列布局时,可以保证内容区块在水平方向上不产生大的空隙,类似瀑布的效果.简单的说,在垂直列表里,内容区块是一个挨着一个的.当内容 ...
- BZOJ 1083: [SCOI2005]繁忙的都市 kruskal
1083: [SCOI2005]繁忙的都市 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1083 Description 城市C是一个非 ...
- Linux中搭建SVNserver
一 下载工具 1. subversion-1.6.17.tar.gz 2. subversion-deps-1.6.17.tar.gz 二 解压两个包: 1.在此之前,我已经创建了一个用户svnroo ...
- 微信公共服务平台开发(.Net 的实现)10-------地理位置
微信公共平台中涉及到地理位置的有两种情况: 第一.我发送一个自选的地理位置给微信,然后微信可以自动反馈响应的信息. 第二.让微信获取我们GPS定位地址位置,反馈响应的信息. 首 ...
- 【JavaScript】JavaScript中的Timer是怎么工作的( setTimeout,setInterval)
原文(http://www.yeeyan.org/articles/view/luosheng/24380) 作为入门者来说,了解JavaScript中timer的工作方式是很重要的.通常它们的表现行 ...
- HtmlAgilityPack.dll的使用 获取HTMLid
简介 本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用,用途比较多的应该是例如采集类的功能,采集到的html字符串要怎样处理是一个头痛的问题,如果是截取就太麻 ...
- 数据剪切命令cut和数据粘贴命令pastte
在Windows中,经常从一个文件将一段文本移动到另一个文件中.在Linux中执行这个任务的是cut和paste命令. 一.数据剪切命令cut 命令格式: cut [option] [file] 常用 ...