Взял базовое приложение(выдираем информацию о пользователе запустившем приложение), которое здесь выкладывалось, и попробовал его переписать с поправкой на JSON.
Код: Выделить всё
package { import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import utils.MD5; import com.adobe.serialization.json.JSON; public class Main extends Sprite { private static const APP_ID:uint = 12345; // id вашего приложения private static const APP_SECRET:String = "supercode"; // секретный ключ private static const MY_ID:uint = 12345; private var loader:URLLoader = new URLLoader(); private var viewer_id:uint; private var sig:String; private var nameTxt:TextField = new TextField(); private var nicknameTxt:TextField = new TextField(); public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); var params:Object = LoaderInfo(root.loaderInfo).parameters; viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : MY_ID; getProfile(viewer_id); } private function getProfile(uid:uint):void { // Формируем sig - подпись запроса // Пример: sig = md5(viewer_idname1=value1name2=value2secret) sig = MD5.encrypt(viewer_id+"api_id"+APP_ID+"method=getProfilesfields=nicknameuids=" + uid + "format=JSONv=2.0" + APP_SECRET); // Отправляем запрос к Вконтакте API var request: URLRequest = new URLRequest("http://api.vkontakte.ru/api.php?api_id=" + APP_ID + "&method=getProfiles&uids=" + uid + "&fields=nickname&format=JSON&v=2.0&sig=" + sig); loader.addEventListener(Event.COMPLETE, onLoaderComlete); loader.load(request); } private function onLoaderComlete(e:Event):void { loader.removeEventListener(Event.COMPLETE, onLoaderComlete); nicknameTxt.text = ""; if (loader.data != null) { var jsonObj:* = JSON.decode(loader.data); var res:Array = jsonObj.response; var nickname:String = res[0].nickname; nicknameTxt.text = nickname; nicknameTxt.x = 490; nicknameTxt.y = 380; addChild(nicknameTxt); var name:String = res[0].first_name + ' ' + res[0].last_name; nameTxt.text = name; nameTxt.x = 450; nameTxt.y = 300; addChild(nameTxt); } else { trace("Error"); } }
Код: Выделить всё
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at Main/onLoaderComlete() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete()
Написал небольшой пример, который просто обрабатывает данные в формате JSON, без обращения к Вконтакте.API - он работает.
Код: Выделить всё
// Пример работы с JSON: var jsonString:String = '{"response":[{"uid":12345,"first_name":"Виталий","last_name":"Михайлов","nickname":"plushkin98rus"}]}'; var jsonObj:* = JSON.decode(jsonString); var res:Array = jsonObj.response; var nickname:String = res[0].nickname; nicknameTxt.x = 490; nicknameTxt.y = 380; nicknameTxt.text = nickname; addChild(nicknameTxt);