在这里呢,我首先要搭建服务器端服务器比较简单
我这里用的是wamp服务器集成环境,下载地址为:http://www.crsky.com/soft/10723.html
需要下载amfphp:http://sourceforge.net/projects/amfphp/files/
下载后将amfphp文件解压后的文件复制到wamp根目录服务器,一般是放在一个叫做www的文件夹中。
我们只要关心一个叫做gateway.php的文件和一个叫做services的文件夹
服务器端代码,我们在services文件夹中建立自己的服务类:代码如下,我建立了一个叫做BaseService.php文件
<?php
class BaseService
{
//对象构造函数
function BaseService() {
}
/*
* @param functionArr [{functionName:_local9["functionName"], params:_local9["params"], sequence:_local9["sequence"]}]
* @param $retryCount
*/
//这个函数就是我们要在客户端访问的方法,该方法是根据客户端的请求,执行不同的php文件,完成不同的功能并返回
public function dispatch($request)
{
// 在这里可以根据$request传来的参数中的访问方法名来执行不同的php文件中代码,生成不同的对象,完成需要需求的功能
,这里是拿HelloWorld.php做个例子,因为是变量你可以自己设置。以应对变化
$serverRootPath =$_SERVER['DOCUMENT_ROOT'];
$commandPath = $serverRootPath."/Command";
$commandActionPhp = $commandPath."/HelloWorld.php";
$command = "HelloWorld";
include_once $commandActionPhp;
$cmd = new $command();
//这里运行的是请求类的代码
$res = $cmd->say($request);
//返回给客户端
return $res;
}
}
?>
HelloWorld.php,这个文件的路径只要放在服务器中就行,我们会包含进来的
<?php
class HelloWorld
{
function HelloWorld()
{
}
function say($sMessage)
{
// 'You said: ' . $sMessage;
return $sMessage;
}
}
?>
:该文件是在BaseService中调用的,你可以建立多个这样的文件,已完成不同的功能。
客户端代码:
ios oc
需要使用cocoaImf框架:https://github.com/nesium/cocoa-amf
加到客户端
只要实现一个代理就可以了
m_remotingCall.URL = [NSURL URLWithString:@"http://10.18.1.143/gateway.php"];
m_remotingCall.service = @"BaseService";//服务器端services下的php文件
m_remotingCall.delegate = self;
m_remotingCall.method = @"dispatch";//调用BaseService.php文件中的访问dispatch
m_delegate = nil;
访问:
m_remotingCall.arguments = [NSArray arrayWithObject:@"123456789abcde"];
回调:
receivedObject:(NSObject *)object
{
//objc_msgSend(m_delegate, @selector(callerDidFinishLoading:receivedObject:), self, object);
NSLog(@"message:%@",object);//返回的是123456789abcde,成功了
}
- (void)remotingCall:(AMFRemotingCall *)remotingCall didFailWithError:(NSError *)error
{
objc_msgSend(m_delegate, @selector(caller:didFailWithError:), self, error);
}