Too many requests per second

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
garymar
Сообщения: 30
Зарегистрирован: 26 авг 2010, 14:57

Too many requests per second

Сообщение garymar »

Здравствуйте!

Столкнулся с такой проблемой. Я делаю выборку всех ID друзей, затем циклом перебираю и вытаскиваю аватарки этих друзей и засовываю в соответствующие мувики. Но проблема в том, то загружается не больше 4 друзей (аватарок). Далее в трейса пишет такое "Too many requests per second". Как выйти из такой неприятной ситуации подскажите..
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Too many requests per second

Сообщение Александр »

В контакте есть ограничение на количество запросов в секунду к серверу api.
Ты можешь сделать выборку id и фотографий одним запросом getFriends с параметрами.
Аватара пользователя
alexei
Разработчик
Разработчик
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44

Re: Too many requests per second

Сообщение alexei »

Можно еще http://vkontakte.ru/developers.php?o=-1&p=execute использовать.
garymar
Сообщения: 30
Зарегистрирован: 26 авг 2010, 14:57

Re: Too many requests per second

Сообщение garymar »

Александр писал(а):В контакте есть ограничение на количество запросов в секунду к серверу api.
Ты можешь сделать выборку id и фотографий одним запросом getFriends с параметрами.
Как это можно реализовать. хоть пару строк кода можно написать ? Дело в том что мне нужно сделать выборку всех друзе которые установили данное приложениие.. Вконтакте есть такая АПИ функция friends.getAppUsers , но как реализовать в коде правильно???
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Too many requests per second

Сообщение Александр »

garymar
Если только тех, кто установили, то запросом getFriends не получится.
Методом friends.getAppUsers вытаскивай id как и делаешь. Потом сделай список этих id через запятую и отправь в запросе getProfiles. Подобное описано в уроке Вывод списка друзей в приложении (getFriends и getProfiles).
friends.getFriends (без параметров) и friends.getAppUsers - возвращают одинаковую структуру.

Или используй execute, как написал alexei

Код: Выделить всё

code=return API.getProfiles({uids: API.getAppFriends(), fields: "photo"});
garymar
Сообщения: 30
Зарегистрирован: 26 авг 2010, 14:57

Re: Too many requests per second

Сообщение garymar »

Я так понимаю, делается как-то так:

Код: Выделить всё

var perechen:string = "";for (var i:uint; i<response.uid.length(); i++)   {      if (i != (response.uid.length()-1))      {         perechen = perechen + response.uid[i] + ",";      }      else      {      perechen = perechen + response.uid[i];      }   }var sig:String=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=photo_mediummethod=getProfilestest_mode='+test_mode+'uids='+perechen+'v=2.0'+api_secret);var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+perechen+"&test_mode="+test_mode+"&fields=photo_medium&v=2.0&sig="+sig);loader_friend.load(request);
А дальше как вытаскивать поочерёдно аватарки?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Too many requests per second

Сообщение Александр »

garymar
Если используешь старую версию API, то почему бы не использовать библиотеку. С ней всё так как в уроке. Если не умеешь обрабатывать XML, то можешь немного логически посмотрев на код, вместо фамилии вывести фото.

Код: Выделить всё

            for each (var user:XML in responseFriendsProfiles.*) {                friends=friends+'<a href="http://vkontakte.ru/id'+user.uid+'">'+user.photo+'</a><br />';            }
garymar
Сообщения: 30
Зарегистрирован: 26 авг 2010, 14:57

Re: Too many requests per second

Сообщение garymar »

Всё! Я по другому решил немного.. Работает.. Спасибо!!
Ответить