AsyncToken вернуть основную строку?

Я пытаюсь разработать приложение Flex Mobile / PHP, и у меня возникают проблемы с AsyncToken... Разве он не просто возвращает базовую строку?

Например... Я хочу просто вернуть простой строковый результат из моего запроса - сейчас он собирается вернуть базовую выходную строку из реализованного метода. Бэкэнд-часть работает (PHP), я сделал все это... Это то, что вызывает у меня некоторые проблемы:

import mx.rpc.AsyncResponder;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
protected function button_clickHandler(event:MouseEvent):void
{
    loginResult.token = user_service.login();
    loginResult.token.addResponder(new AsyncResponder(onResult,onFault));
}

public function onResult(event:ResultEvent, token:Object):void
{
    // what would i do here??
}

public function onFault(event:FaultEvent,token:Object):void
{
    txtResult.text = event.fault.faultDetail;
}

Это довольно просто - любые предложения или рекомендации наверняка помогут! Спасибо!

1 ответ

Решение

Достаточно просто. Свойство ResultEvent#result содержит значение, возвращаемое удаленной службой. Все, что вам нужно сделать, это привести его к нужному типу (так как это объект по умолчанию).

Например, обработка вашего сервисного метода, который возвращает строку:

public function onResult(event:ResultEvent):void {
    var s:String = event.result as String;
}

То же самое касается других типов:

var a:Array = event.result as Array;

Или даже более сложные пользовательские классы:

var instance:MyClass = event.result as MyClass;

Обратите внимание, что этот последний пример будет работать только с удаленным взаимодействием AMF; у вас должно быть одинаковое определение класса на стороне клиента и на стороне сервера; и вы должны сообщить им о существовании друг друга с помощью [RemoteClass(alias="net.riastar.MyClass")] тег метаданных в вашем определении класса AS. То, как вы должны справиться с этим на стороне сервера, зависит от языка, используемого там.

Другие вопросы по тегам