error CS0021: Невозможно применить индексирование с [] к выражению типа Объект ` '
Первая строка не могу спокойно индексировать , хотя перед результатом в функции я могу указать респонс
async void sheck()
{
object test = vk_api("users.get", $"user_ids={user_id}");
await DisplayAlert("Тест", test["responce"].toString(), "Окей"); //здесь ошибка на test["response"] - error CS0021: Невозможно применить индексирование с [] к выражению типа Объект
}
Функция vk_api с резульатом:
async Task<object> vk_api(string method, string paramtr)
{
HttpClient Client = new HttpClient();
Client.DefaultRequestHeaders.UserAgent.ParseAdd("VKAndroidApp/5.47.1-4248 (Android 9; SDK 28; armeabi-v7a; Android; ru; 1920x1080)");
var values = new Dictionary<string, string>
{
{ "access_token", (string)access_token },
};
var content = new FormUrlEncodedContent(values);
//https://api.vk.com/method/users.get?user_ids=1&v=5.131&access_token=token
var response = await Client.PostAsync("https://api.vk.com/method/" + method + "?" + paramtr + "&v=5.131", content);
JObject result = JObject.Parse(await response.Content.ReadAsStringAsync());
result["response"]; // Вот здесь индексирование работает
return result;
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Во-первых, используйте HttpClient правильно
readonly HttpClient client = new HttpClient();
public MyClass() // конструктор
{
// это вообще точно нужно?
client.DefaultRequestHeaders.UserAgent.ParseAdd("VKAndroidApp/5.47.1-4248 (Android 9; SDK 28; armeabi-v7a; Android; ru; 1920x1080)");
}
async Task<JObject> VkApiRequestAsync(string method, string parameter)
{
var values = new Dictionary<string, string>
{
["access_token"] = (string)access_token
};
using var content = new FormUrlEncodedContent(values);
using var response = await client.PostAsync("https://api.vk.com/method/" + method + "?" + parameter + "&v=5.131", content);
return JObject.Parse(await response.Content.ReadAsStringAsync());
}
Во-вторых, намудрили с типами
async Task CheckAsync()
{
JObject test = await VkApiRequestAsync("users.get", $"user_ids={user_id}");
await DisplayAlert("Тест", test["response"].ToString(), "Окей");
}
Вызывать так
await CheckAsync();