Citrom67 Ответов: 2

Как исправить "произошла ошибка при отправке запроса."


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

Что я уже пробовал:

[Command("stats")]
        public async Task Profileosu([Remainder]string username = null)
        {
            try
            {
                string url = String.Format($"http://osu.ppy.sh/api/get_user?k={k}&u={username}");
                using (HttpClient client = new HttpClient())
                {
                        client.BaseAddress = new Uri("http://osu.ppy.sh");
                        client.DefaultRequestHeaders.Accept.Clear();
                        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        HttpResponseMessage responseMessage = await client.GetAsync(url);
                        
                         string result = await responseMessage.Content.ReadAsStringAsync();
                         IList<Profile> profile = JsonConvert.DeserializeObject<IList<Profile>>(result);
                   

                    //embedbuild
                    embed.WithThumbnailUrl($"https://a.ppy.sh/{profile.First().user_id}");
                    embed.WithAuthor($"{username} #{profile.First().pp_rank}, {profile.First().pp_raw}PP", Context.Guild.CurrentUser.GetAvatarUrl(), $"https://osu.ppy.sh/users/{profile.First().user_id}");
                    embed.WithDescription($"Join date:{profile.First().join_date}\nCountry:{profile.First().country} #{profile.First().pp_country_rank}\nAccuray:{double.Parse(profile.First().accuracy):F2}%\nPlaycount:{profile.First().playcount}");
                    embed.WithColor(154, 255, 0);
                    await ReplyAsync($"", false, embed.Build());

                }

            }
            catch (Exception ex)
            {

                embed.WithAuthor("An error occured");
                embed.WithDescription("This player doesn't exist, please check the spelling of the username!");
                embed.WithColor(255, 0, 0);
                await ReplyAsync($"", false, embed.Build());
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                if (ex.InnerException != null)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }
                if (ex.InnerException.InnerException.Message != null)
                {
                    Console.WriteLine(ex.InnerException.InnerException.Message);
                }
            }
        }

dnxit

Лучше зарегистрировать полный объект исключения, чтобы увидеть трассировку стека и другие детали, но если вы просто хотите получить сообщение, попробуйте ex.GetBaseException().Message;

2 Ответов

Рейтинг:
2

Member 14925956

Почему я не могу отправить запрос на дружбу


Рейтинг:
0

Gerry Schmitz

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

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


Citrom67

Но тогда почему одно и то же имя пользователя работает в следующий раз?