在這裏呢,我首先要搭建服務器端服務器比較簡單
我這裏用的是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);
}