Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не работает программа API kotlin

Карина Корпушенко Корпушенко Ученик (96), на голосовании 4 дня назад
пишу приложение для поиска рецептов через API spoonacular этого сайта. Однако высвечивается лишь сообщение, что рецепт не найден
class Recipes : AppCompatActivity() {
lateinit var query: EditText

lateinit var description: TextView
lateinit var ingredients: TextView
lateinit var recipe: TextView




override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recipes)


val searchButton: Button = findViewById( R.id.search _button)
searchButton.setOnClickListener { search_Click(it) }
}


@SuppressLint("SuspiciousIndentation")
private fun search_Click(view: View) {
query=findViewById( R.id .query)
description=findViewById( R.id .description)
ingredients=findViewById( R.id .ingredients)
recipe=findViewById( R.id .recipe)

if (query.text.toString().isNotEmpty()) {
var apiKey = "4494e2470e0aba25e5e0463b52e0f4486a108f57"
var url = "https//api.spoonacular.com/recipes/complexSearch?query="+ query.text.toString() + "&apiKey=" + apiKey+"&lang=ru"
val queue = Volley.newRequestQueue(this)
val stringRequest = StringRequest(
com.android .volley.Request.Method.GET,
url,
{ response ->
val obj = JSONObject(response)
val resultsArray = obj.getJSONArray("results")
if (resultsArray.length() > 0) {
val firstResult = resultsArray.getJSONObject(0)
val title = firstResult.getString("title") // Correct key for title
recipe.text = title
val instructions = firstResult.getString("instructions") // Ensure this key exists
description.text = instructions

// Check the correct key for ingredients
val ingredientsArray = firstResult.getJSONArray("ingredients") // Example key
val ingredientList = mutableListOf<String>()
for (i in 0 until ingredientsArray.length()) {
val ingredient = ingredientsArray.getJSONObject(i)
ingredientList.add(ingredient.getString("name"))
}
ingredients.text = ingredientList.joinToString(", ")
}},
{
error ->
Log.e("RecipeDetailsError", "Error fetching recipe details: ${error.message}")
Snackbar.make(view, "Error fetching recipe details", Snackbar.LENGTH_LONG).show()
}
)
queue.add(stringRequest)
}else {
Snackbar.make(view,"Введите название блюда", Snackbar.LENGTH_LONG).show()
}
}}
: в запросе специально убрала
Голосование за лучший ответ
Редис Александрович Оракул (79315) 1 месяц назад
Рекомендую все запросы сначала отлаживать через какой нибудь HTTP клиент. Поставь Postman или Insomnia , создай запрос, добавь токен свой и посмотри что возвращает. Если всё нормально, то проверяешь тогда уже строкку запроса в скотлине. Но так на всикдку у тебя такой поидее get запрос, который в браузере возвращает, что у тебя не проходит авторизация, точно токен правильно работает?
 https://api.spoonacular.com/recipes/complexSearch?query=ZAPROS_HERE_PLACE&apiKey=4494e2470e0aba25e5e0463b52e0f4486a108f57&lang=ru 
Похожие вопросы