[Note] Sử dụng URLRequest và URLLoader để tương tác với API trong AS3
Mục đích Trong quá trình làm Flash với ActionScript, thường xuyên xuất hiện nhu cầu tương tác với các API bên ngoài để đọc và cập nhật dữ liệu. Ví dụ như khi chúng ta làm 1 game với nền tảng Flash, tuy nhiên việc quản lý người chơi, điểm số, high score lại được chạy trên một dịch vụ khác. Khi ...
Mục đích
Trong quá trình làm Flash với ActionScript, thường xuyên xuất hiện nhu cầu tương tác với các API bên ngoài để đọc và cập nhật dữ liệu.
Ví dụ như khi chúng ta làm 1 game với nền tảng Flash, tuy nhiên việc quản lý người chơi, điểm số, high score lại được chạy trên một dịch vụ khác. Khi đó chúng ta cần tương tác với API của dịch vụ này để làm một số việc như đọc high score, cập nhật điểm khi người chơi chơi thắng game...
Cách làm
// Sample var url_request = new URLRequest(); url_request.url = "<API URL HERE>"; url_request.requestHeaders = [new URLRequestHeader("Content-Type", "application/json")]; url_request.method = URLRequestMethod.GET; // or POST var url_loader:URLLoader = new URLLoader(); url_loader.addEventListener(Event.COMPLETE, result_receive); url_loader.load(url_request); // Call back function function result_receive(e: Event):void{ trace("Done!"); }
Một ví dụ cụ thể hơn khi làm logic game cho contest The Decicions Day của FramgiaVN vừa rồi.
var this_task_id = 30; var time = new Date().time; var url_request:URLRequest = new URLRequest(); var request_code = MD5.hash(cookieVariables["dd_user_id"] + "_" + this_task_id + "_" + time + "_" + MD5.hashed_hash(cookieVariables["dd_user_id"])); url_request.url = "http://ctf.framgia.vn/api/v1/post_result?user_id=" + cookieVariables["dd_user_id"] + "&task_id=" + this_task_id + "&code=" + request_code + "&time=" + time; url_request.requestHeaders = [new URLRequestHeader("Content-Type", "application/json")]; url_request.method = URLRequestMethod.GET; var url_loader:URLLoader = new URLLoader(); url_loader.addEventListener(Event.COMPLETE, result_receive); url_loader.load(url_request); // Call back function function result_receive(e: Event):void{ trace("Done!"); }
P.S. Bài viết mang đậm tính chất take note để dùng cho sau này. Mong mọi người góp ý (lay2)