Flex calls WebService2 (Based on. net) and flexwebservice2

Source: Internet
Author: User

Flex calls WebService2 (Based on. net) and flexwebservice2

There are many methods for flex to access WebService, using"Data/service"The function can automatically generate a proxy class to access WebService. This prevents all data access from being written to the MXML page for reuse. At the same time, you can directly import custom data types to the background, this facilitates parameter passing.

Directly run the code: the WebService Interface

?
1234567891011121314151617181920212223242526 namespace MyNetWebService{    /// <summary>    /// Summary of MyWebService    /// </summary>    [WebService(Namespace = "http://tempuriTemp.org/")]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [System.ComponentModel.ToolboxItem(false)]    // To allow ASP. net ajax to call this Web service from a script, cancel the comments to the downstream.    // [System.Web.Script.Services.ScriptService]    public class MyWebService : System.Web.Services.WebService    {         [WebMethod]        public string HelloWorld()        {            return "Hello World";        }         [WebMethod]        public Model[] GetDetailResult(SearchParameter parmeter, Staff staff)        {            return ModelHelp.GetSaleDetailResult(parmeter, staff);        }    }        }

Add a WebService:

Connection data/service-> Web Service-> wsdl url: Enter the service address (http: // localhost/XXX/MyWebService. asmx? WSDL)

Use"Data/service"Proxy class generated by the function under services:

Imported webService methods and custom types under data/service

Automatically generate a proxy class _ Super_MyWebService.as to access WebService

/** * This is a generated class and is not intended for modification.  To customize behavior * of this service wrapper you may modify the generated sub-class of this class - MyWebService.as. */package services.mywebservice{import com.adobe.fiber.core.model_internal;import com.adobe.fiber.services.wrapper.WebServiceWrapper;import com.adobe.serializers.utility.TypeUtility;import mx.rpc.AbstractOperation;import mx.rpc.AsyncToken;import mx.rpc.soap.mxml.Operation;import mx.rpc.soap.mxml.WebService;import valueObjects.DetailSearchParameter;import valueObjects.Employee;import valueObjects.Sale;[ExcludeClass]internal class _Super_MyWebService extends com.adobe.fiber.services.wrapper.WebServiceWrapper{         // Constructor    public function _Super_MyWebService()    {        // initialize service control        _serviceControl = new mx.rpc.soap.mxml.WebService();        var operations:Object = new Object();        var operation:mx.rpc.soap.mxml.Operation;        operation = new mx.rpc.soap.mxml.Operation(null, "HelloWorld");         operation.resultType = String;        operations["HelloWorld"] = operation;        operation = new mx.rpc.soap.mxml.Operation(null, "GetDetailResult");         operation.resultElementType = valueObjects.Sale;        operations["GetDetailResult"] = operation;        _serviceControl.operations = operations;        try        {            _serviceControl.convertResultHandler = com.adobe.serializers.utility.TypeUtility.convertResultHandler;        }        catch (e: Error)        { /* Flex 3.4 and eralier does not support the convertResultHandler functionality. */ }        _serviceControl.service = "MyWebService";        _serviceControl.port = "MyWebServiceSoap";        wsdl = "http://localhost/XXX/MyWebService.asmx?WSDL";        model_internal::loadWSDLIfNecessary();        model_internal::initialize();    }    /**      * This method is a generated wrapper used to call the 'HelloWorld' operation. It returns an mx.rpc.AsyncToken whose       * result property will be populated with the result of the operation when the server response is received.       * To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value.       * You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.      *      * @see mx.rpc.AsyncToken      * @see mx.rpc.CallResponder       *      * @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.      */    public function HelloWorld() : mx.rpc.AsyncToken    {        model_internal::loadWSDLIfNecessary();        var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("HelloWorld");        var _internal_token:mx.rpc.AsyncToken = _internal_operation.send() ;        return _internal_token;    }         /**      * This method is a generated wrapper used to call the 'GetDetailResult' operation. It returns an mx.rpc.AsyncToken whose       * result property will be populated with the result of the operation when the server response is received.       * To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value.       * You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.      *      * @see mx.rpc.AsyncToken      * @see mx.rpc.CallResponder       *      * @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.      */    public function GetDetailResult(parmeter:valueObjects.DetailSearchParameter, loginEmp:valueObjects.Employee) : mx.rpc.AsyncToken    {        model_internal::loadWSDLIfNecessary();        var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("GetDetailResult");        var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(parmeter,loginEmp) ;        return _internal_token;    }     }}

 

Automatically generate the proxy class MyWebService. as for accessing WebService

/** * This is a generated sub-class of _MyWebService.as and is intended for behavior * customization.  This class is only generated when there is no file already present * at its target location.  Thus custom behavior that you add here will survive regeneration * of the super-class.  **/ package services.mywebservice{public class MyWebService extends _Super_MyWebService{               }}

Flex terminal Temp. mxml

<? Xml version = "1.0" encoding = "UTF-8"?> <Mx: Module xmlns: fx = "http://ns.adobe.com/mxml/2009" xmlns: s = "library: // ns.adobe.com/flex/spark" xmlns: mx = "library: // ns.adobe.com/flex/mx "layout =" vertical "width =" 100% "height =" 100% "xmlns: common =" common. * "xmlns: mywebservice =" services. mywebservice. * "> <fx: Script> <! [CDATA [import mx. events. flexEvent; import mx. rpc. events. resultEvent; import mx. rpc. soap. webService; import mx. controls. alert; protected function btn_call_clickHandler (event: MouseEvent): void {// TODO Auto-generated method stub getresult. token = MyWebService. helloWorld ();} protected function getresult_resultHandler (event: ResultEvent): void {// TODO Auto-generated method stub if (event. result! = Null) {resultweb. text = event. result as String ;}]]> </fx: Script> <! -- Reference css styles --> <fx: Style source = "css/style.css"/> <fx: Declarations> <! -- Place non-visual elements (such as services and value objects) Here --> <mywebservice: MyWebService id = "MyWebService" showBusyCursor = "true" fault = "Alert. show (event. fault. faultString + '\ n' + event. fault. faultDetail) "/> <s: CallResponder id =" getresult "result =" getresult_resultHandler (event) "/> </fx: Declarations> <s: VGroup width = "100%" height = "100%" paddingLeft = "10" paddingRight = "10" paddingBottom = "10" paddingTop = "3"> <s: HGroup width = "100%" verticalAlign = "middle"> <mx: Text id = "resultweb"/> <common: cbutton id = "btn_call" label = "Call webService" click = "btn_call_clickHandler (event)"/> </s: HGroup> <s: HGroup width = "100%" verticalAlign = "middle"> <s: label verticalAlign = "middle" styleName = "msgTxtStyle" width = "100%" id = "msg_label"/> </s: HGroup> </s: VGroup> </mx: module>

Running result:

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.