Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Странный ответ от api контакта (http://www.flasher.ru/forum/showthread.php?t=202095)

pall92 30.06.2013 19:57

Странный ответ от api контакта
 
Здрасьте, большое желание уже убрать букву Т из заголовка... суть: я отправляю запрос контакту(любой) и отлавливаю как и положено ответ. собственно - он приходит. в нем есть нужные переменные.. но все они имеют дефолтные значения - 0, null или undefined!

проверил все что только можно - приложение запрашивает у пользователя все разрешения нужные для запроса, собственно сам запрос составлен верно, пользователь с указанным id(в данном примере запроса) - тоже установил приложение и в друзьях, id написан без ошибок)...
вообще даже не представляю что можно еще проверить..

гугл не помог - то ли я не могу кратко сформулировать вопрос, то ли еще что-то. короче говоря, вылезает все не по теме.

написал вконтакт, в поддержку. все что они смогли ответить - "Ваш вопрос рассматривается. К сожалению, необходимо немного подождать."

они не сказали даже на чьей стороне проблема.. ничего. дальнейшие попытки с ними связаться - впустую.
все бы ничего.. но уже почти месяц прошел с того момента как я написал вопрос в поддержку. работа стоит(

собственно код, на всякий случай:


Код AS3:

public static function getProfile():void
                {
                        Main.output(userID + "loading profile \n");
                        Main.THIS.wrapper.external.api('users.get', {uids: userID, fields: "photo_medium, sex"},getProfSuccess, getProfFail);
                        //loading user vars
 
                }
                static function getProfSuccess(Data:Object):void
                {
                        Main.output("loading profile2 complete");
                        userGender = Data.sex;
 
                        userPhoto = Data.photo_medium;
 
                        userName = Data.first_name;
 
                        userGender = Data.sex;
                        Main.output('name=' + userName);
                        Main.output('photo=' + userPhoto);
                        Main.output('sex=' + userGender + '\n');
                }
                static function getProfFail(Data:Object):void
                {
                        Main.output("loading profile failed");
 
                }


maxkar 30.06.2013 22:18

А сниффером посмотреть структуру ответа, например?
Вас не смущает
Код:

users.get
// ...
Data.sex

? А если бы вы запрашивали двух пользователей? В общем, там не объект с данными пользователя приходит. А объект с данными пользователей. То ли map'а из id в пользователя, то ли массив, то ли объект с полем-массивом. По идее, в сниффере будет видно. И for'ом по объекту можно пройтись и посмотреть на его структуру.

AlexCooper 30.06.2013 23:06

Вконтакте отвечает массивом пользователей.
Код AS3:

private function userDataHandler(data: Object): void 
{
 
        account.uid = data[0].uid;
        account.full_name = data[0].first_name+" "+data[0].last_name;
}


caseyryan 30.06.2013 23:12

Мне кажется за месяц-то уже можно было эту мелкую проблему решить.
Если не понятно что там приходит, то можно хотя бы так было сделать
Код AS3:

trace(JSON.encode(Data));

И сразу стало бы понятно, что да, там действительно приходит массив.

pall92 01.07.2013 01:44

так и знал, что про нескольких пользователей скажут) я же даже пример прислал - там один пользователь... я знаю как действовать когда их больше - ибо в другом приложении, где я тестил работу с api - такой проблемы не было. хотя код такой же) если бы проблема была в этом - программа вызывала бы сообщения об ошибке(я прикрутил систему отладки для работы с api), как она собственно и вызывала пока я не разобрался с тем в каком формате приходит ответ. в том то и дело, что значения переменных я получаю. но они "пустые" О,о

за строчку trace(JSON.encode(Data)); - спасибо... не знал про такую штуку))) сейчас попробую

Добавлено через 19 минут
"trace(JSON.encode(Data));"

эммм... строчка не работает - пишет ошибку: не определено свойство JSON...

хотя в мануале написано что класс JSON находится в верхнем пакете О.о

Добавлено через 44 минуты
ой я дебиииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииил =D.

вобщем если кому понадобится -
ответ из контакта обычно приходит в массиве, да.

но в некоторых методах принцип другой:
в ответ приходит объект с массивом (data.response[i]), если запрашивалось больше одного "объекта", или просто data.var в случае если "объект" был один... вот это меня и запутало.. разные методы - разные типы ответов %)

звучит бредово, но про response мне собственно тех поддержка и говорила.. и тогда(давно) это помогло... и я все переправил под этот принцип =)

всем спасибо. сильно надо мной не смейтесь)
к слову - может кто-нибудь помочь с мелким вопросом (не стоит он новой темы)
короче - как обращаться к не статичной переменной главного класса из статичных методов О,о

знаю, что вроде бы должно быть где-то "мануальное" решение... но не нашел. а показывать людям код со всякими кракозябами типо "Main.THIS.var", где static var THIS = this =D - ужасно стыдно


впрочем это ерунда... спасибо за магию форума)

olexandr 01.07.2013 07:08

статичным методам не зачем обращаться к каким-бы то ни было свойствам главного класса
не встречал еще ситуации, чтобы статичным методам нужна была информация кроме той, которой передают непосредственно самому методу в виде параметров.

caseyryan 01.07.2013 08:09

Цитата:

короче - как обращаться к не статичной переменной главного класса из статичных методов О,о
Никак. Только создавая экземпляр. Статические свойства существуют на уровне класса, все остальное на уровне экземпляров.


Часовой пояс GMT +4, время: 18:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.