Вы, вероятно, уже используете интерфейс для выполнения вызовов API, и именно здесь вы добавляете тело String к запросу.
public interface YourService{
@POST("forms/xxxxxx/reponse")
Call<Object> makeCall(@Body String body);
}
Если вы не использовали интерфейс с модернизацией, чем вы можетесоздайте экземпляр вышеупомянутого интерфейса, используя существующий RetrofitClient:
YourService service = retrofitClient.create(YourService.class);
И теперь вы можете получить доступ к API, вызвав makeCall для экземпляра службы:
service.makeCall(yourCustomString).enqueue(new Callback<Object>() {
@Override
public void onResponse(Response<MovieResponse> response) {...}
@Override
public void onFailure(Throwable t) {...}
});
Вы можетепостроить "yourCustomString" с помощью String Builder или около того, хотя я бы не рекомендовал этого, вместо этого я бы использовал ConverterFactory и отобразил бы ваши JSON-данные на Java POJO. Например Моши (com.squareup.retrofit2: конвертер-моши). Если вы сделаете это, вы можете использовать Java POJO в качестве аннотированного атрибута @Body и просто установить два атрибута «questionId» и «answer1» в POJO вместо создания String.
Если вы сделаете это, вы получите два класса:
public class Answer {
@Json(name = "questionId")
public String questionId;
@Json(name = "answer1")
public String answer1;
}
и
public class Body {
@Json(name = "answers")
private List<Answer> answers = new LinkedList<>();
}
Теперь, когда вы просто создадите объект Body изатем добавьте столько ответов, сколько вы хотите, к атрибуту ответов, а затем используйте объект Body в качестве параметра в интерфейсе модернизации.
Примечание. Если вы это сделаете, вы должны добавить MoshiConverterFactory в RetrofitClient при сборке. это.