«Подделка» (= издевательство) запроса удаленного взаимодействия AMFPHP - PullRequest
2 голосов
/ 26 декабря 2009

Я с большим успехом использую AMFPHP, чтобы связать свою базу данных с моим приложением Flex. Однако я хочу иметь возможность тестировать удаленные запросы вне флеш-памяти, набрав что-то вроде:

http://localhost/amfphp/gateway.php?[WHAT СДЕЛАЮ ЗДЕСЬ]

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

Ответы [ 4 ]

5 голосов
/ 26 декабря 2009

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

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

Домашняя страница Sabre AMF

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

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 голос
/ 28 октября 2010

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

0 голосов
/ 26 декабря 2009

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

0 голосов
/ 26 декабря 2009

AMF - двоичный формат , возможно, все будет не так просто: вам нужно выяснить, как закодированы ваши данные ...

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

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

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

...