An Operation used specifically by HTTPService or HTTPMultiService. An Operation is an individual operation on a service usually corresponding to a single operation on the server side. An Operation can be called either by invoking the function of the same name on the service or by accessing the Operation as a property on the service and calling the send(param1, param2) method. HTTP services also support a sendBody method which allows you to directly specify the body of the HTTP response. If you use the send(param1, param2) method, the body is typically formed by combining the argumentNames property of the operation with the parameters sent. An Object is created which uses the argumentNames[i] as the key and the corresponding parameter as the value.

The exact way in which the HTTP operation arguments is put into the HTTP body is determined by the serializationFilter used.

Constructor

@:value({ name : null, service : null })new(?service:AbstractService, ?name:String)

Creates a new Operation.

Parameters:

service

The object defining the type of service, such as HTTPMultiService, WebService, or RemoteObject.

name

The name of the service.

service

The object defining the type of service, such as HTTPMultiService, WebService, or RemoteObject.

name

The name of the service.

Variables

argumentNames:Array<String>

An ordered list of the names of the arguments to pass to a method invocation. Since the arguments object is a hashmap with no guaranteed ordering, this array helps put everything together correctly. It will be set automatically by the MXML compiler, if necessary, when the Operation is used in tag form.

@:flash.propertyconcurrency:String

Value that indicates how to handle multiple calls to the same service. The default value is multiple. The following values are permitted:

  • multiple Existing requests are not cancelled, and the developer is responsible for ensuring the consistency of returned data by carefully managing the event stream. This is the default value.
  • single Only a single request at a time is allowed on the operation; multiple requests generate a fault.
  • last Making a request cancels any existing request.

@:flash.propertycontentType:String

Type of content for service requests. The default is application/x-www-form-urlencoded which sends requests like a normal HTTP POST with name-value pairs. application/xml send requests as XML.

@:value({ })headers:Dynamic = { }

Custom HTTP headers to be sent to the third party endpoint. If multiple headers need to be sent with the same name the value should be specified as an Array.

@:flash.propertymethod:String

HTTP method for sending the request. Permitted values are GET, POST, HEAD, OPTIONS, PUT, TRACE and DELETE. Lowercase letters are converted to uppercase letters. The default value is GET.

@:value({ })request:Dynamic = { }

Object of name-value pairs used as parameters to the URL. If the contentType property is set to application/xml, it should be an XML document.

@:flash.propertyrequestTimeout:Int

Provides access to the request timeout in seconds for sent messages. If an acknowledgement, response or fault is not received from the remote destination before the timeout is reached the message is faulted on the client. A value less than or equal to zero prevents request timeout.

@:flash.propertyresultFormat:String

Value that indicates how you want to deserialize the result returned by the HTTP call. The value for this is based on the following:

  • Whether you are returning XML or name/value pairs.
  • How you want to access the results; you can access results as an object, text, or XML.

The default value is object. The following values are permitted:

  • object The value returned is XML and is parsed as a tree of ActionScript objects. This is the default.
  • array The value returned is XML and is parsed as a tree of ActionScript objects however if the top level object is not an Array, a new Array is created and the result set as the first item. If makeObjectsBindable is true then the Array will be wrapped in an ArrayCollection.<
  • xml The value returned is XML and is returned as literal XML in an ActionScript XMLnode object.
  • flashvars The value returned is text containing name=value pairs separated by ampersands, which is parsed into an ActionScript object.
  • text The value returned is text, and is left raw.
  • e4x The value returned is XML and is returned as literal XML in an ActionScript XML object, which can be accessed using ECMAScript for XML (E4X) expressions.

@:flash.propertyrootURL:String

The URL that the HTTPService object should use when computing relative URLs. This property is only used when going through the proxy. When the useProxy property is set to false, the relative URL is computed automatically based on the location of the SWF running this application. If not set explicitly rootURL is automatically set to the URL of mx.messaging.config.LoaderConfig.url.

serializationFilter:SerializationFilter

A SerializationFilter can control how the arguments are formatted to form the content of the HTTP request. It also controls how the results are converted into ActionScript objects. It can be set either explicitly using this property or indirectly using the resultFormat property.

@:flash.propertyshowBusyCursor:Bool

If true, a busy cursor is displayed while a service is executing. The default value is false.

@:flash.propertyurl:String

Location of the service. If you specify the url and a non-default destination, your destination in the services-config.xml file must allow the specified URL.

@:flash.propertyuseProxy:Bool

Specifies whether to use the Flex proxy service. The default value is false. If you do not specify true to proxy requests though the Flex server, you must ensure that the player can reach the target URL. You also cannot use destinations defined in the services-config.xml file if the useProxy property is set to false.

xmlDecode:Dynamic ‑> Dynamic

ActionScript function used to decode a service result from XML. When the resultFormat is an object and the xmlDecode property is set, Flex uses the XML that the HTTPService returns to create an Object. If it is not defined the default XMLDecoder is used to do the work.

The function referenced by the xmlDecode property must take a flash.xml.XMLNode object as a parameter and should return an Object. It can return any type of object, but it must return something. Returning null or undefined causes a fault.

The following example shows an <mx:HTTPService> tag that specifies an xmlDecode function:

<mx:HTTPService id="hs" xmlDecode="xmlDecoder" url="myURL" resultFormat="object" contentType="application/xml">
	<mx:request><source/>
		<obj>{RequestObject}</obj>
	</mx:request>
</mx:HTTPService>

The following example shows an xmlDecoder function:

function xmlDecoder(myXML) {
	// Simplified decoding logic.
	var myObj = {};
	myObj.name = myXML.firstChild.nodeValue;
	myObj.honorific = myXML.firstChild.attributes.honorific;
	return myObj;
}

xmlEncode:Dynamic ‑> Dynamic

ActionScript function used to encode a service request as XML. When the contentType of a request is application/xml and the request object passed in is an Object, Flex attempts to use the function specified in the xmlEncode property to turn it into a flash.xml.XMLNode object If the xmlEncode property is not set, Flex uses the default XMLEncoder to turn the object graph into a flash.xml.XMLNode object.

The xmlEncode property takes an Object and should return a flash.xml.XMLNode object. In this case, the XMLNode object can be a flash.xml.XML object, which is a subclass of XMLNode, or the first child of the flash.xml.XML object, which is what you get from an <mx:XML> tag. Returning the wrong type of object causes a fault. The following example shows an <mx:HTTPService> tag that specifies an xmlEncode function:

<mx:HTTPService id="hs" xmlEncode="xmlEncoder" url="myURL" resultFormat="object" contentType="application/xml">
	<mx:request><source/>
		<obj>{RequestObject}</obj>
	</mx:request>
</mx:HTTPService>

The following example shows an xmlEncoder function:

function xmlEncoder(myObj) {
	return new XML("<userencoded><attrib0>MyObj.test</attrib0><attrib1>MyObj.anotherTest</attrib1></userencoded>");
}

Methods

sendBody(parameters:Dynamic):AsyncToken

Inherited Variables

Defined by AbstractOperation

arguments:Dynamic

The arguments to pass to the Operation when it is invoked. If you call the send() method with no parameters, an array based on this object is sent. If you call the send() method with parameters (or call the function directly on the service) those parameters are used instead of whatever is stored in this property. For RemoteObject Operations the associated argumentNames array determines the order of the arguments passed.

@:flash.propertyname:String

The name of this Operation. This is how the Operation is accessed off the service. It can only be set once.

properties:Dynamic

This is a hook primarily for framework developers to register additional user specified properties for your operation.

@:flash.propertyread onlyservice:AbstractService

Provides convenient access to the service on which the Operation is being invoked. Note that the service cannot be changed after the Operation is constructed.

Defined by AbstractInvoker

@:flash.propertyread onlykeepLastResult:Bool

Flag indicating whether the operation should keep its last call result for later access.

If set to true, the last call result will be accessible through lastResult bindable property.

If set to false, the last call result will be cleared after the call, and must be processed in the operation's result handler. This will allow the result object to be garbage collected, which is especially useful if the operation is only called a few times and returns a large result.

If not set, will use the keepLastResult value of its owning Service, if any, or the default value.

See also:

  • lastResult

  • mx.rpc.AbstractService#keepLastResult

@:flash.propertyread onlylastResult:Dynamic

The result of the last invocation.

@:flash.propertymakeObjectsBindable:Bool

When this value is true, anonymous objects returned are forced to bindable objects.

operationManager:Function

This property is set usually by framework code which wants to modify the behavior of a service invocation without modifying the way in which the service is called externally. This allows you to add a "filter" step on the method call to ensure for example that you do not return duplicate instances for the same id or to insert parameters for performing on-demand paging.

When this is set to a non-null value on the send call, the operationManager function is called instead. It returns the token that the caller uses to be notified of the result. Typically the called function will at some point clear this property temporarily, then invoke the operation again actually sending it to the server this time.

resultElementType:Class<Dynamic>

Like resultType, used to define the ActionScript class used by a given operation though this property only applies to operations which return a multi-valued result (e.g. an Array or ArrayCollection (IList)). This property specifies an ActionScript class for the members of the array or array collection. When you set resultElementType, you do not have to set resultType. In that case, the operation returns an Array if makeObjectsbindable is false and an ArrayCollection otherwise.

resultType:Class<Dynamic>

Specifies an optional return type for the operation. Used in situations where you want to coerce the over-the-wire information into a specific ActionScript class or to provide metadata for other services as to the return type of this operation.

Inherited Methods

Defined by AbstractOperation

send(args:Rest<Dynamic>):AsyncToken

Executes the method. Any arguments passed in are passed along as part of the method call. If there are no arguments passed, the arguments object is used as the source of parameters.

Parameters:

args

Optional arguments passed in as part of the method call. If there are no arguments passed, the arguments object is used as the source of parameters.

Returns:

AsyncToken object. The same object is available in the result and fault events from the token property.

Defined by AbstractInvoker

@:value({ fireBindingEvent : true })clearResult(fireBindingEvent:Bool = true):Void

Sets the result property of the invoker to null. This is useful when the result is a large object that is no longer being used.

Parameters:

fireBindingEvent

Set to true if you want anything bound to the result to update. Otherwise, set to false. The default value is true

setResult(result:Any):Void

This hook is exposed to update the lastResult property. Since lastResult is ordinarily updated automatically by the service, you do not typically call this. It is used by managed services that want to ensure lastResult always points to "the" managed instance for a given identity even if the the service returns a new copy of the same object.

Parameters:

result

The new value for the lastResult property.