2

I am using AMFPHP with great success to link my database with my Flex application. However I want to be able to test the remoting requests outside of flash, by typing something like:

http://localhost/amfphp/gateway.php?[WHAT DO I PUT HERE]

What do I put after the questionmark in order to have the browser (or a C++ http component) call the amfphp service, so that the http request needn't "initiate" from flash.

4

4 回答 4

5

听起来您想从 PHP 进行 AMF 调用。您不能直接从浏览器执行此操作。数据将以二进制 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 类,这样您就可以轻松地调用每个方法。

于 2009-12-26T16:34:42.247 回答
1

AMFPHP 具有服务浏览器,它允许您模拟对服务器端服务的调用并查看响应。它基本上将内部 CURL 请求返​​回到同一个服务文件并传入您提供的参数,并且就像直接从客户端 Flash 应用程序完成一样。

于 2010-10-28T14:34:16.623 回答
0

考虑到 AMFPHP 网关只是一种转换(从/到二进制)和分派到具有各种传入参数的类/方法的机制,最后是数据的 return() - 您可以直接针对该方法进行单元测试,从而跳过整个 AMF 层?

于 2009-12-26T15:29:26.930 回答
0

AMF 是一种二进制格式,事情可能不会那么简单:你必须找出你的数据是如何编码的......

作为第一步,也许您可​​以从您的gateway.php脚本中,将它接收到的所有内容转储到一个文件中,当它从您的闪存组件调用时?

这样,您可以看到接收到的数据的样子(并且您会知道它是在 POST 中传递的,还是在 GET 中传递的)。

根据这些数据的样子,也许您将能够“伪造”对您的服务器的请求——但我认为这不会像从浏览器调用 URL 那样简单......

于 2009-12-26T13:05:39.613 回答