• [转]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:   

     image

        

          对于其他的客户端,可以跟返回值一样获取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:

    image

  • 相关阅读:
    ASP.NET 页面间传递参数的方法
    Javascript 检查字符串是否是数字的几种方法
    周鸿祎教你写商业计划书
    提高网站程序性能的十条建议
    启动IIS6下Gzip功能详细操作步骤
    IT创业前要深思的八大问题
    学了php才知道MVC是怎么回事
    不能访问windows installer 服务 的解决方法
    SNS 相关
    【技术】Ubuntu上位机配置Blackfin开发环境手记
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3566132.html
Copyright © 2020-2023  润新知