iphone amf 客戶端和服務器端

在這裏呢,我首先要搭建服務器端服務器比較簡單

我這裏用的是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);
}











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章