#php #actionscript-3 #flex4 #amfphp
#php #actionscript-3 #flex4 #amfphp
Вопрос:
Я ищу способ перехвата исключения, создаваемого PHP во Flex с помощью HTTPService
. Возможно ли это сделать без использования AMFPHP?
В моей текущей реализации, если исключение генерируется в PHP, FaultEvent.FAULT
действительно отправляется на стороне Flex. Единственная проблема заключается в том, что строка сообщения об исключении нигде не найдена в FaultEvent
.
Позвольте мне попытаться лучше объяснить с помощью примера. Допустим, у нас есть следующий PHP-код на стороне сервера:
<?php
throw new Exception("Exception message");
?>
На стороне flex, скажем, есть HTTPService
экземпляр, который вызывает приведенный выше PHP-код. Более того, он вызывает следующую функцию на FaultEvent.FAULT
:
private function onFaultyResult(evt:FaultEvent):void {
//How do I get the exception message here?
}
Как я могу получить сообщение об исключении из PHP в этой функции?
Примечание: trace(evt.toString())
выдает:
[FaultEvent fault=[RPC Fault faultString="HTTP request error" faultCode="Server.Error.Request" faultDetail="Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: 192.168.1.119/exception.php"]. URL: 192.168.1.119/exception.php"] messageId="7FF021A3-8C83-CB14-081D-8C8438802204" type="fault" bubbles=false cancelable=true eventPhase=2]
Я также искал «Сообщение об исключении» в других полях evt
в отладчике, но не смог его найти.
Спасибо
Комментарии:
1. RTFM: help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/…
2. @nikc: Вот что показывает трассировка (evt.toString): [Ошибка события ошибки =[Ошибка RPC faultString=»Ошибка HTTP-запроса» faultCode=»Сервер. Ошибка. Запрос «faultDetail=»Ошибка: [IOErrorEvent type=»IOError» bubbles=false cancelable=false eventPhase=2 text=»Ошибка #2032: ошибка потока. URL: 192.168.1.119/flex_ssh2_exception.php «] . URL: 192.168.1.119/flex_ssh2_exception.php «] MessageId=»07CC2B64-D064-8EB3-CF6D-8C74D4BE7125″ тип= «ошибка» пузырьки = false отменяемый = true eventPhase =2]
Ответ №1:
Основная проблема заключается в том, что Flash не может обработать сервер, повторно возвращает статус <> 200 http://www.robsondesign.com/blog/index.php/2009/04/16/flex-flash-and-http-status-codes /