|
|
|||||
Регистрация: Sep 2012
Сообщений: 7
|
Взаимодействие с API ВКонтакте. Обработка JSON-ответов.
Здравствуйте, коллеги.
Ради интереса, решил изучить ВКонтакте API, но достаточно быстро застопорился. Приведу код, а дальше объясню, в чём проблема: package vkApiTest { import flash.display.JointStyle; import flash.display.Sprite; import flash.events.*; import flash.text.*; import vk.APIConnection; public class Main extends Sprite { private var tF: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); // entry point var flashVars:Object = stage.loaderInfo.parameters as Object; var VK:APIConnection = new APIConnection(flashVars); if (!flashVars.api_id) { // -- For local testing enter you test-code here: flashVars['api_id'] = 1888171; flashVars['viewer_id'] = 66748; flashVars['sid'] = "7e22c25d7fece88f2316553937ff24f43e1073ca28e8b4302e65db35fa"; flashVars['secret'] = "6113n3e4g3"; // -- // } tF.type = TextFieldType.DYNAMIC; tF.border = true; tF.width = 200; tF.height = 200; addChild(tF); VK.api('storage.set', { key:'var', value:'example' } ); VK.api('storage.get', { key:'var' }, completeFunc, errorFunc); function completeFunc(vkObj:Object):void { tF.appendText("completeFunc сработала"); if (vkObj[0] == "example") { tF.appendText("Работает!"); } else { tF.appendText("Работает, но не так..."); } } function errorFunc(vkObj:Object):void { tF.appendText("Ошибка"); } } } } Это приложение заливается в Контакт. Дальше просто запускается. Если приложение "отключено", то в textField'e появляется сообщение "Ошибка", то есть срабатывает функция errorFunc. Если приложение "включено и видно всем", то в текстовом поле появляется "completeFunc сработала". Окей, я в правильном направлении. Но вот как получить доступ к возвращённому функцией значению? Обращаюсь к официальному руководству по API: http://vk.com/pages?oid=-1&p=storage.get Ничего не проясняется... Да, функция возвращает значение. Но в каком виде? Я так понимаю, что в виде переменной экземпляра объекта, который передаётся в мою функцию completeFunc. Возможно ошибка где-то в синтаксисе. Чтобы понять, как правильно обратить к возвращаемому значению я читал: http://www.flasher.ru/forum/showthread.php?t=181260 - эту тему на форуме. Пробовал: ничего... http://vk.com/topic-1_21972158 - искал в этой теме по ключевому слову "storage.get". http://vk.com/topic-2226515_3507340 - искал в этой теме по тому же ключевому слову. Пробовал: vkObj.response vkObj['response'] vkObj.data vkObj.['data'] vkObj[0] В общем что-то ничего не получается. Прошу объяснить мне, что не так и, если возможно, привести работающие примеры. Если что-то из списка выше того, что я пробовал, на самом деле верно, то укажите мне на это. Буду искать у себя ошибку. П.С. И как бы мне просмотреть все переменные экземпляра у объекта и вывести их имена и значения? Добавлено через 19 часов 9 минут Много узнал про JSON, но всё-равно ничего не понимается. Итак, возвращается значение в виде: Моя функция completeFunc в качестве аргумента получает декодированную JSON-строки в виде объекта, который присваивается переменной vkObj. Значит у этого объекта должна быть переменная экземпляра "response" со значением "example". Внёс изменения в код, чтобы выполнить метод "encode" над vkObj и посмотреть JSON-строку в первоначальном виде: VK.api('storage.set', { key:'var', value:'example' } ); VK.api('storage.get', { key:'var' }, completeFunc, errorFunc); function completeFunc(vkObj:Object):void { var data:String = JSON.encode(vkObj); tF.appendText(data); if (data == "example") { tF.appendText("Работает!"); } else { tF.appendText("\nРаботает, но не так..."); } } function errorFunc(vkObj:Object):void { tF.appendText("Ошибка"); } Цитата:
Почему же выводится просто "example" (да еще и в кавычках), а не {"response":"example"}? Что я делаю не так и как же мне всё-таки получить значение переменной, возвращаемое методом storage.get? Последний раз редактировалось soundy_flash; 24.10.2012 в 19:25. Причина: Уточнение заголовка. |
Часовой пояс GMT +4, время: 06:02. |
|
« Предыдущая тема | Следующая тема » |
Теги |
storage.get , vk , Вконтакте API , вопрос |
|
|