2009-12-26 4 views
2

Я использую AMFPHP с большим успехом, чтобы связать мою базу данных с моим приложением Flex. Однако я хочу, чтобы иметь возможность проверить запросы удаленного взаимодействия за пределами вспышки, набрав что-то вроде:«Ковка» (= издевательская) запрос удаленного доступа AMFPHP

http://localhost/amfphp/gateway.php?[WHAT я помещаю здесь]

Что я поставил после Questionmark, чтобы иметь браузер (или Компонент http-компонента C++) вызывают службу amfphp, так что HTTP-запрос не требуется «инициировать» из флэш-памяти.

ответ

0

AMF being a binary format, то, вероятно, не будет так просто: вы должны выяснить, как кодируются ваши данные ...

В качестве первого шага, может быть, вы могли бы, с вашего gateway.php сценария, просто сбрасывать все, что он получает в файл, когда он вызывается из вашей flash-компоненты?

Таким образом, вы можете видеть, как выглядят полученные данные (и вы узнаете, передано ли оно в POST или в GET).

В зависимости от того, как выглядят эти данные, возможно, вы сможете «подделать» запрос на свой сервер, но я не думаю, что это будет так просто, как просто вызвать URL-адрес из вашего браузера. ..

0

Учитывая, что шлюз AMFPHP является всего лишь механизмом для перевода (от/до двоичного) и отправки в класс/метод с различными входящими параметрами и, наконец, с возвратом() данных - вы можете просто протестировать непосредственно против метод, таким образом пропуская весь слой AMF?

5

Похоже, вы хотите сделать вызов AMF с PHP. Вы не можете сделать это прямо из браузера. Данные будут возвращены в двоичном формате AMF, который, естественно, PHP или браузер не могут обрабатывать напрямую. Я даже не думаю, что это может сделать запрос.

Для выполнения вызова и декодирования вам понадобится клиент AMF - я предлагаю использовать SabreAMF.

Sabre AMF homepage

Это то, что код метода простой клиент вызова выглядит.

require 'SabreAMF/Client.php'; 

function make_request($param1,$param2){ 
$client = new SabreAMF_Client('http://your.server/amfphp/gateway.php'); 
return $client->sendRequest('your_amf_service.yourAMFmethod',array($param1, $param2)); 
} 

вы затем вызвать это как

$result=make_request('cow',300); 

и возвращает массив.

Возможно, вам захочется создать класс PHP со всеми вашими методами, чтобы вы могли легко вызвать их.

1

AMFPHP имеет service browser, который позволяет моделировать вызовы на серверную службу и просматривать ответы. Он в основном делает внутренний запрос CURL обратно в тот же файл службы и передает аргументы, предоставленные вами, и действует так, как если бы это было сделано непосредственно из клиентского приложения Flash.