我正在使用AMFPHP取得巨大成功,将我的数据库与我的Flex应用程序链接起来。但是我希望能够通过输入类似以下内容来测试flash之外的远程处理请求:
http://localhost/amfphp/gateway.php?[WHAT我在这里投下]
为了让浏览器(或C ++ http组件)调用amfphp服务,我在问号后面放了什么,以便http请求不需要从flash“启动”。
答案 0 :(得分:5)
听起来你想用PHP进行AMF调用。您不能直接从浏览器执行此操作。数据将以二进制AMF格式返回,当然PHP或浏览器无法直接处理。我甚至认为它不能提出要求。
你需要一个AMF客户端来进行调用和解码数据 - 我建议使用SabreAMF。
这就是简单的客户端方法调用代码。
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 :(得分:1)
AMFPHP拥有service browser,可让您模拟对服务器端服务的调用并查看响应。它基本上将内部CURL请求返回到相同的服务文件并传递您提供的参数,并且就像直接从客户端Flash应用程序完成一样。
答案 2 :(得分:0)
AMF being a binary format,事情可能不会那么简单:你必须找出你的数据是如何编码的......
作为第一步,也许您可以从gateway.php
脚本中将收到的所有内容转储到文件中,当它从您的Flash组件调用时?
通过这种方式,您可以看到接收到的数据是如何显示的(并且您知道它是在POST中传递还是在GET中传递)。
根据数据的样子,也许您可以“伪造”到您服务器的请求 - 但我认为它不会像从您的浏览器调用URL那么简单。
答案 3 :(得分:0)
考虑到AMFPHP网关只是一种机制(从/到二进制)和调度到具有各种传入参数的类/方法,最后是数据的return() - 你可以直接对方法进行单元测试,因此跳过整个AMF层?