หลายคนคงไม่คุ้นหู หรือไม่เคยได้ยินคำว่า Action Mesasge Format หรือ AMF และผมได้รับภารกิจให้เขียนโปรแกรมด้วย Objective-C สำหรับติดต่อกับ server ด้วยการ serialize ActionScript objects ไปมาระหว่าง client กับ server
โชคดีที่พบว่ามีคนทำ library ไว้ให้แล้วใน github ใช้ขื่อว่า CocoaAMF ลอง clone ลงมาทันทีพบว่ามีตัวอย่างการใช้งานที่สั่ง build และ run ได้เลย
AMFRemotingCall *remotingCall = [[AMFRemotingCall alloc] init]; remotingCall.delegate = self;
จากนั้นกำหนด parameter ต่างๆในลักษณะนี้ และสั่ง start
remotingCall.URL = [NSURL URLWithString:@"http://www.nesium.com/amfdemo/gateway.php"]; remotingCall.service = @"ExampleService"; remotingCall.method = @"add"; remotingCall.arguments = [NSArray arrayWithObjects: params1, params2, nil]; [remotingCall start];
หลังการสั่ง start แล้วจะเป็นการส่ง request ไปยัง service ปลายทางแบบ Asynchronous และเมื่อ request เสร็จสิ้นแล้ว 2 delegate method นี้จะทำงาน ค่าที่ได้เราไม่จำเป็นต้อง parse เองเพราะจะถูกเก็บอยู่ในรูปของ dictionary ให้พร้อมใช้อยู่แล้ว
- (void)remotingCallDidFinishLoading:(AMFRemotingCall *)remotingCall
receivedObject:(NSObject *)object{
FlexArrayCollection *f = (FlexArrayCollection*) object;
NSArray *array = [f source];
NSDictionary *dict = [array objectAtIndex: 0];
}
- (void)remotingCall:(AMFRemotingCall *)remotingCall didFailWithError:(NSError *)error{
NSLog(@"error = %@", error);
}
ขอบคุณท่าน nesium มาก ช่วยลดเวลาไปได้เยอะเลยทีเดียว