Android Retrofit загрузка изображений и текста в одном запросе
У меня есть приложение для Android, которое имеет функцию формы, где я собираю данные, эти данные содержат ответы изображения и текстовые ответы и каждый ответ имеет идентификатор вопроса, который мне нужно отправить также, чтобы знать, какой вопрос сохранить ответ на него в бэкенд API, я пытался отправить все ответы и изображения и текст в одном запросе с помощью Retrofit, но получил несколько ошибок, поэтому я подумал о другом решении, но оно больше не работает вот мой код
Вот мое решение и мне нужно его улучшить
Код повтора для отправки запроса с данными
@Multipart
@POST(SUBMIT_FORM)
suspend fun submitFormAPI(
@Header("Authorization") token: String,
@Part("questions_answers") questions_answers: List<QuestionAnswer>,
@Part answer_image: MultipartBody.Part?,
@Part("question_id") question_id: String?,
): Response<FormResponse>
и вот модель QuestionAnswer, я пытался поместить answer_image внутрь нее, но не работает
data class QuestionAnswer(
val question_id: String,
val answer_value: String? = null,
)
Итак, в этой функции после сбора данных мне нужно пройтись циклом по questionImagesAnswers и на каждой итерации отправлять запрос с изображением и его question_id вместе с другими ответами в questionAnswers
fun onFormSubmit() {
val questionAnswers = mutableListOf<QuestionAnswer>()
val questionImagesAnswers = mutableListOf<QuestionModel>()
questionImagesAnswers.forEach { questionImagesAnswer ->
formViewModel.submitFormAPI(
token = token,
questionAnswers = questionAnswers,
answer_image = questionImagesAnswer.answer_image_file,
question_id = questionImagesAnswer.question_id,
)
}
}
Что мне нужно, если есть способ, который поможет мне поместить answer_image в QuestionAnswer с его идентификатором вопроса, чтобы это выглядело так
data class QuestionAnswer(
val question_id: String,
val answer_value: String? = null,
val answer_image: MultipartBody.Part?
)
и затем отправлять данные таким образом, не делая итераций:
submitFormAPI(
token = token,
questionAnswers = questionAnswers,
)
это поможет мне в обработке всех данных при запросе в бэкенде, чтобы я мог сохранить каждый ответ на свой вопрос следующим образом:
class SubmitFormAPI(views.APIView):
def post(self, request):
questions_answers = request.data['questions_answers']
for question_answer in questions_answers:
question = Question.objects.filter(question_id=question_answer['question_id']).first()
if question:
if "answer_value" in question_answer:
question.answer_value = question_answer['answer_value']
if "answer_image" in question_answer:
question.answer_image = question_answer['answer_image']
question.save()
return Response({
"status": status.HTTP_200_OK,
"message": "Form submitted successfully!",
})
Я пробовал решение выше, но оно не работает для меня, и я не знаю почему, кто-нибудь знает, что мне делать в такой ситуации? Любая помощь или советы?
Спасибо