Проблема с парсером ВК

  1. 5 мес. назад

    Не могу понять что не так. Когда происходит btnParser_Click, то вылетает ошибка о том что элемент массива за его пределами (скрин) .

    Ещё Я не пойму, почему у автора курса на видео тэг с номером анкеты uid, а у меня просто id? Это когда в webBrowser1.Navigate

    namespace vk_study
    {
        public partial class form_vk : Form
        {
            string client_id = "5504555";
            string verAPI = "5.52";
            string userID;
            string tocken;
            string fields = @"fields=photo_id, verified, sex, bdate, city, country, home_town, 
                            has_photo, photo_50, photo_100, photo_200_orig, photo_200, 
                            photo_400_orig, photo_max, photo_max_orig, online, lists, 
                            domain, has_mobile, contacts, site, education, universities, 
                            schools, status, last_seen, followers_count, common_count, 
                            occupation, nickname, relatives, relation, personal, connections, 
                            exports, wall_comments, activities, interests, music, movies, tv, 
                            books, games, about, quotes, can_post, can_see_all_posts, can_see_audio, 
                            can_write_private_message, can_send_friend_request, is_favorite, 
                            is_hidden_from_feed, timezone, screen_name, maiden_name, crop_photo, is_friend, 
                            friend_status, career, military, blacklisted, blacklisted_by_me";
    
            char[] smbl = { '&', '=' };
    
            public form_vk()
            {
                InitializeComponent();
                Init();
            }
    
            private void Init()
            {
                webBrowser1.ScriptErrorsSuppressed = true;
                webBrowser1.Navigate("https://oauth.vk.com/authorize?client_id="+client_id+ "&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends,photos,audio,status,wall,groups,messages,email&response_type=token&v=5.52");
            }
    
            
            private void btnPars_Click(object sender, EventArgs e)
            {
                char[] smbl = { '&', '=' };
                string[] str = webBrowser1.Url.AbsoluteUri.Split(smbl);
                if (str == null) return;
                userID = str[5];
                tocken = str[1];
                btnPars.Enabled = false;
                lblID.Text = "Ваш ID: "+userID+ "\nВаш токен: "+tocken;
            }
    
            private void btnUserInfo_Click(object sender, EventArgs e)
            {
                webBrowser1.Navigate("https://api.vk.com/method/users.get.xml?" + fields + "&access_token=" + tocken + "&v=" + verAPI);
            }
    
            private void btnParser_Click(object sender, EventArgs e)
            {
                WebClient client = new WebClient();
                client.Encoding = Encoding.UTF8;
                listBox1.Items.Add(Parser(client.DownloadString("https://api.vk.com/method/users.get.xml?" + fields + "&access_token=" + tocken), "uid")[0]);
             }
    
            private string[] Parser(string date, string tag)
            {
                List<string> list = new List<string>();
                XmlDocument xml = new XmlDocument();
                try
                {
                    xml.Load(date);
                    XmlNodeList nodeList = xml.GetElementsByTagName(tag);
                    foreach (XmlElement el in nodeList)
                        list.Add(el.InnerText);
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message);
                }
    
                return list.ToArray();
            }
        }
    }
  2. id вместо uid получается когда вызываю событие btnUserInfo_Click

  3. Единственный вариант возникновения такой ошибки - массив из нуля элементов, т.е парсер ничего не нашел

  4. Да Я понимаю. Но где это конкретно в коде? Я всё потом по уроку ещё раз переписал и всё заработало.

 

или зарегистрируйтесь чтобы комментировать!