Здравствуйте, дамы и господа.
Есть сервак на локалхосте (пхп), есть клиент на флеше. Моя задача - вызвать удалённый метод на сервере. В качестве примера - TestService.auth. Класс сервиса:
| Код | <?php class TestService { private var $login; private var $password; public function __constructor() { $this->login = "user"; $this->password = "123456"; } public function auth($login, $password) { if ($file = fopen(dirname(__FILE__) . "/out.txt", "w")) { fwrite($file, implode(", ", array($login, $password))); fclose($file); } if ($this->login !== $login) return array("errno" => 1, "error" => "Invalid login"); if ($this->password !== $password) return array("errno" => 2, "error" => "Invalid password"); return array("success" => true); } } ?>
|
В браузере проверял - класс рабочий. Далее, файл в кодировке utf8, имя совпадает с названием класса. Версия amfphp - 1.9, версия пхп - 5.3.6, версия апача - 2.2.19.
Теперь клиент:
| Код | package { import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.NetStatusEvent; import flash.net.NetConnection; import flash.net.Responder; import flash.text.TextField; public class Test extends Sprite { public function Test() { var t : TextField = new TextField(); t.width = 500; addChild(t); var c : NetConnection = new NetConnection(); c.addEventListener(NetStatusEvent.NET_STATUS, function (e : NetStatusEvent) : void { t.text = e.info.code.toString(); }); try { c.connect("http://localhost/amfphp/gateway.php"); // Если проверить, то тут получается c.connected = false c.call("TestService.auth", null, "log", "pass"); } catch (e : *) // До сюда дело не доходит { t.text = e.toString(); c.close(); } } } }
|
Я получаю событие NetStatusEvent с кодом NetConnection.Call.BadVersion. Версия флекс сдк - 4.5.1.
В нете нашёл кучу ссылок по данной проблеме, но норм решения не нашёл. :(
Кто сталкивался с такой шнягой, подскажите ок?
Спасибо за внимание! |