Получаю количество пользователей из запроса. Если их больше 1000 (а их 21215) то в цикле пытаюсь используя смещение занести всех в dataGridView3
// получил количество пользователей
...
if (user_count > 1000)
{
do
{
USER_ID = GET_http(String.Format("https://api.vk.com/method/users.search.xml?" + request + "&offset=" + offset + "&count=1000&fields=photo_id&access_token={0}", Settings1.Default.token));
XmlDocument doc = new XmlDocument();
doc.LoadXml(USER_ID);
XmlNodeList items = doc.SelectNodes("response/user/uid");
foreach (XmlNode item in items)
{
k++;
if (item.LocalName == "uid")
dataGridView3.Rows.Add(item.FirstChild == null ? "" : k + ") " + item.FirstChild.Value, (item.NextSibling.InnerText == null ? "" : item.NextSibling.InnerText) + " " + (item.NextSibling.NextSibling.InnerText == null ? "" : item.NextSibling.NextSibling.InnerText), item.NextSibling.NextSibling.NextSibling == null ? "" : (item.NextSibling.NextSibling.NextSibling.InnerText == null ? "" : item.NextSibling.NextSibling.NextSibling.InnerText));
}
offset += 1000;
user_count -= 1000;
System.Threading.Thread.Sleep(50);
}
while (user_count > 0);
}
Первый цикл возвращает нормальный ответ в формате с ID, first_name, last_name.
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<response list=\"true\">\n <count>21215</count>\n <user>\n <uid>ид человека</uid>\n <first_name> Имя </first_name>\n <last_name>Фамилия</last_name>\n <photo_id>ид фотки</photo_id>\n </user>\n ..... </response>\n"
Во втором проходе цикла do while после смещения на 1000 возвращается запрос вида:
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<response list=\"true\">\n <count>21215</count>\n</response>\n"
. После смещения возвращается кол-во участников группы, но возвращаются ID, first_name, last_name. D В чем может быть проблема?
Такая последовательность запросов выдает аналогичный результат. Первый ответ полный, второй только количество участников.
USER_ID = GET_http(String.Format("https://api.vk.com/method/users.search.xml?" + request + "&offset=0&count=1000&fields=photo_id&access_token={0}", Settings1.Default.token));
USER_ID = GET_http(String.Format("https://api.vk.com/method/users.search.xml?" + request + "&offset=1000&count=1000&fields=photo_id&access_token={0}", Settings1.Default.token));