包 | mx.rpc.http |
类 | public class SerializationFilter |
继承 | SerializationFilter Object |
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
此类的一个实例可以管理 HTTP 请求和响应的格式设置及其参数的转换。当您使用 HTTPService 或 HTTPMultiService 时,通常是在与一个服务器通信,该服务器希望数据以特定格式提供,例如,HTML 类型表单的 URL 编码值、XML 值或 JSON 等其它序列化格式。借助于 SerializationFilter,您可以自定义 HTTPService 和 HTTPMultiService 将操作的参数转换为 HTTP 请求的主体的方式,以及将响应转换为操作的返回值的方式。框架开发人员可以通过提供 SerializationFilter 的新实现来将新的序列化格式引入系统,还可以使用这些组件以及基于这些组件构建的所有框架和工具,而无需了解格式自身的详细信息。
首先,您应该扩展 SerializationFilter 并覆盖一个或多个转换方法。使用过滤器,可以将参数的有序列表转换为请求主体、修改请求主体、修改请求中使用的内容类型、修改请求中使用的实际 URL,以及将响应数据转换为在服务的结果事件中返回的结果对象。
有两种为特定 HTTPService 或 HTTPMultiService 指定 SerializationFilter 的方法。可以对服务设置 serializationFilter 属性,也可以为新的结果格式静态注册一个 SerializationFilter。如果使用此方法,则只需指定 resultFormat 即可使用预先注册的 SerializationFilter。例如,您可以首先为“json”类型注册一个 SerializationFilter,然后通过设置 resultFormat="json" 来使用此过滤器。
请注意,HTTPService 只提供直接采用请求主体的方法,因此不使用“serializeParameters”方法。
方法 | 由以下参数定义 | ||
---|---|---|---|
此方法以原始格式从 HTTP 请求中获取结果。 | SerializationFilter | ||
此方法由 HTTP 服务在执行调用之前调用。 | SerializationFilter | ||
表示对象是否已经定义了指定的属性。 | Object | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
[静态]
此静态函数用于为特定 resultFormat 值注册一个新的 SerializationFilter。 | SerializationFilter | ||
HTTP 服务的所有调用操作都调用此方法。 | SerializationFilter | ||
此方法通过 HTTP 服务调用的“send”方法调用,用于将参数转换为请求主体。 | SerializationFilter | ||
如果您需要使用请求主体对象中的数据并将其编码为 URL 字符串,则可以使用此方法。 | SerializationFilter | ||
设置循环操作动态属性的可用性。 | Object | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object |
deserializeResult | () | 方法 |
public function deserializeResult(operation:AbstractOperation, result:Object):Object
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
此方法以原始格式从 HTTP 请求中获取结果。如果需要,可以将结果转换为类型化更彻底的 ActionScript 对象。为了使 SerializationFilter 更加通用,您可以使用提供的 AbstractOperation 的 resultType 或 resultElementType 属性,以便您的代码可以将传入的请求动态映射到 ActionScript 中作为返回类型配置的类型。
另请注意,AbstractOperation 包含“属性”映射,您可以使用它将其它属性作为服务调用的一部分存储在 ActionScript 中,以处理特定类型的反序列化。
参数
operation:AbstractOperation — 所调用的 AbstractOperation。
| |
result:Object — 从服务器返回的原始结果。
|
Object — 经过转换的结果,该结果随后将在服务的结果事件中提供。
|
getRequestContentType | () | 方法 |
public function getRequestContentType(operation:AbstractOperation, obj:Object, contentType:String):String
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
此方法由 HTTP 服务在执行调用之前调用。它负责选择此请求使用的 contentType。许多序列化格式都有一个固定的内容类型,因此通过此方法可能仅可以返回该内容类型。由于 HTTPService 本身配置了一个内容类型,因此将在此方法中传递该值,并由默认实现返回。此外,还为要序列化的请求主体提供了 obj 参数,以便在内容类型依赖于要发送到服务器的对象类型时使用。
参数
operation:AbstractOperation — 所调用的 AbstractionOperation。
| |
obj:Object — 要序列化的 HTTP 请求的主体
| |
contentType:String — 为操作配置的 contentType
|
String — 要用于此 HTTP 请求的内容类型。
|
registerFilterForResultFormat | () | 方法 |
public static function registerFilterForResultFormat(resultFormat:String, filter:SerializationFilter):SerializationFilter
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
此静态函数用于为特定 resultFormat 值注册一个新的 SerializationFilter。如果您在启动时调用了一次此方法,则只能将 HTTPService 或 HTTPMultiService 的 resultFormat 属性指定为使用该序列化过滤器,以使开发人员更为轻松地指定格式。
参数
resultFormat:String — 要与提供的 SerializationFilter 相关联的自定义 resultFormat 名称。
| |
filter:SerializationFilter — 要注册的 SerializationFilter。
|
SerializationFilter |
serializeBody | () | 方法 |
public function serializeBody(operation:AbstractOperation, obj:Object):Object
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
HTTP 服务的所有调用操作都调用此方法。它能够将提供的对象转换为适合直接置于 HTTP 请求主体中的格式。默认实现只返回作为主体传入的对象,而不进行任何转换。
参数
operation:AbstractOperation — 所调用的 AbstractOperation
| |
obj:Object — HTTP 请求的初始主体,即 serializeParameter 的返回值,或 HTTPService 的 sendBody 方法或 send 方法的参数。
|
Object — 要在请求中使用的可能已转换的主体。
|
serializeParameters | () | 方法 |
public function serializeParameters(operation:AbstractOperation, params:Array):Object
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
此方法通过 HTTP 服务调用的“send”方法调用,用于将参数转换为请求主体。原始 send 调用的参数被置于参数数组中。此方法会将这组参数转换为单一对象,以用作 HTTP 请求主体的数据。默认实现将生成一个对象,其中键采用 Operation 的 argumentNames 数组中的值,值采用参数值。使用默认实现时,必须设置 argumentNames 以使其具有与参数数组相同数量的元素。
请注意,如果您使用只采用单一对象的 sendBody 方法调用 HTTP 操作,则不使用此方法。在这种情况下,将跳过此步骤,并且仅调用 serializeBody 方法。
参数
operation:AbstractOperation — 所调用的 AbstractOperation。
| |
params:Array — 传递给 send 方法的参数列表
|
Object — 要在 HTTP 请求中使用的主体
|
serializeURL | () | 方法 |
public function serializeURL(operation:AbstractOperation, obj:Object, url:String):String
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
如果您需要使用请求主体对象中的数据并将其编码为 URL 字符串,则可以使用此方法。此方法接受对操作或服务配置的传入 URL。此实现仅返回传入的 URL,而不进行任何转换。
参数
operation:AbstractOperation — 所调用的 AbstractOperation
| |
obj:Object — 对服务或操作设置的 URL
| |
url:String |
String — 要用于此请求的可能已修改的 URL。
|
Tue Jun 12 2018, 11:04 AM Z