Конкретный способ помещения аргументов операции HTTP в тело HTTP определяется используемым классом serializationFilter.
Значение по умолчанию:
Примечание. Вследствие программного ограничения при использовании метода GET служба HTTPService не генерирует понятных пользователю сообщений об ошибках.
Примечание. Adobe рекомендует вместо этого метода использовать метод mx.messaging.ChannelSet.logout().
Значение по умолчанию:
Функция, вызванная свойством
<mx:HTTPService id="hs" xmlDecode="xmlDecoder" url="myURL" resultFormat="object" contentType="application/xml"> <mx:request><source/> <obj>{RequestObject}</obj> </mx:request> </mx:HTTPService>В следующем примере показана функция xmlDecoder:
function xmlDecoder (myXML) { // Simplified decoding logic. var myObj = {}; myObj.name = myXML.firstChild.nodeValue; myObj.honorific = myXML.firstChild.attributes.honorific; return myObj; }
Свойство
<mx:HTTPService id="hs" xmlEncode="xmlEncoder" url="myURL" resultFormat="object" contentType="application/xml"> <mx:request><source/> <obj>{RequestObject}</obj> </mx:request> </mx:HTTPService>В следующем примере показана функция xmlEncoder:
function xmlEncoder (myObj) { return new XML(""); } MyObj.test MyObj.anotherTest
Конкретный способ помещения аргументов операции HTTP в тело HTTP определяется используемым классом serializationFilter.
Функция, вызванная свойством
<mx:HTTPService id="hs" xmlDecode="xmlDecoder" url="myURL" resultFormat="object" contentType="application/xml"> <mx:request><source/> <obj>{RequestObject}</obj> </mx:request> </mx:HTTPService>В следующем примере показана функция xmlDecoder:
function xmlDecoder (myXML) { // Simplified decoding logic. var myObj = {}; myObj.name = myXML.firstChild.nodeValue; myObj.honorific = myXML.firstChild.attributes.honorific; return myObj; }
Свойство
<mx:HTTPService id="hs" xmlEncode="xmlEncoder" url="myURL" resultFormat="object" contentType="application/xml"> <mx:request><source/> <obj>{RequestObject}</obj> </mx:request> </mx:HTTPService>В следующем примере показана функция xmlEncoder:
function xmlEncoder (myObj) { return new XML(""); } MyObj.test MyObj.anotherTest
Значение по умолчанию:
Можно установить такие атрибуты, как URL-адрес и метод в теге HTTPMultiService, для использования в качестве значений по умолчанию, установленных в каждом отдельном теге операции. URL-адрес HTTPMultiService служит базовым URL-адресом (т.е. префиксом) для любых относительных URL-адресов, установленных в тегах операций HTTP. Каждая операция http имеет метод
Можно передать параметры по указанному URL-адресу, используемому для помещения данных в запрос HTTP. Свойство contentType указывает mimeType, используемый для определения формата передаваемых данных (например, кодировка формы HTTP или XML).
Для реализации пользовательского формата resultFormat, например JSON, можно также использовать фильтр сериализации. Если не применяется служба прокси на базе сервера, можно использовать только методы HTTP GET или POST. Однако если при использовании службы прокси на базе сервера для свойства
Примечание. В отличие от класса HTTPService, класс HTTPMultiService не определяет свойство
Примечание. Из-за ограничений, связанных с программным обеспечением, служба HTTPService, HTTPMultiService не создает понятные пользователю сообщения об ошибках при использовании метода GET, а не прокси.
Значение по умолчанию:
Экземпляр этого класса может управлять форматированием запросов, ответов HTTP и преобразованием их параметров. При использовании службы HTTPService или HTTPMultiService обычно осуществляется коммуникация с сервером, ожидающим предоставление данных в определенном формате – например закодированные значения URL для формы HTML, значения XML или другой формат сериализации, например JSON. SerializationFilter позволяет настроить способ преобразования параметров операции посредством служб HTTPService и HTTPMultiService в тело запроса HTTP и способ преобразования ответа в возвращаемое значение операции. Разработчики инфраструктуры могут вводить в систему новый формат сериализации через новую реализацию SerializationFilter и использовать эти компоненты и все инфраструктуры и инструментальные средства, построенные на этих компонентах, без знания подробной информации непосредственно о формате.
Во-первых, требуется расширить SerializationFilter и переопределить один или несколько методов преобразования. Фильтр позволяет превращать упорядоченный список параметров в тело запроса, изменять тело запроса, изменять используемый в запросе тип содержимого, изменять используемый в запросе фактический URL-адрес и преобразовывать данные ответа в объект результата, полученный в событии результата службы.
Существует два способа определения SerializationFilter для определенной службы HTTPService или HTTPMultiService. Можно определить свойство serializationFilter в службе или статически зарегистрировать SerializationFilter для нового формата результата. При использовании этого подхода через простое определение resultFormat можно использовать предварительно зарегистрированный SerializationFilter. Например, можно зарегистрировать SerializationFilter для типа json, а затем использовать этот фильтр определением resultFormat="json".
Обратите внимание, что служба HTTPService только предоставляет методы, которые непосредственно принимают тело запроса и поэтому не использует метод serializeParameters.
Обратите также внимание, что AbstractOperation имеет карту «свойств», которую можно использовать для сохранения дополнительных свойств как части вызова службы в ActionScript с целью обработки десериализации определенного типа.
Обратите внимание, что этот метод не используется при вызове операции HTTP с помощью метода sendBody, принимающего только один объект. В таком случае этот шаг пропускается и вызывается только метод serializeBody.