iphone amf 客户端和服务器端

来源:互联网 发布:真心话大冒险交友软件 编辑:程序博客网 时间:2024/06/05 19:26

在这里呢,我首先要搭建服务器端服务器比较简单

我这里用的是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 = [[AMFRemotingCall alloc] init];
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"];
[m_remotingCall start];

回调:

- (void)remotingCallDidFinishLoading:(AMFRemotingCall *)remotingCall 
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);
}