2 回答

TA貢獻1842條經驗 獲得超21個贊
您可能已經在使用接口來進行 api 調用,這就是您將 String 正文添加到請求的位置。
public interface YourService{
@POST("forms/xxxxxx/reponse")
Call<Object> makeCall(@Body String body);
}
如果您尚未使用帶有 Retrofit 的接口,則可以使用現有的 RetrofitClient 創(chuàng)建上述接口的實例:
YourService service = retrofitClient.create(YourService.class);
現在您可以通過在服務實例上調用 makeCall 來訪問 api:
service.makeCall(yourCustomString).enqueue(new Callback<Object>() {
@Override
public void onResponse(Response<MovieResponse> response) {...}
@Override
public void onFailure(Throwable t) {...}
});
您可以使用 String 生成器等構建“yourCustomString”,盡管我不建議這樣做,但我會使用 ConverterFactory 并將您的 JSON 數據映射到 Java POJO。例如 Moshi (com.squareup.retrofit2:converter-moshi)。如果這樣做,您可以使用 Java POJO 作為 @Body 注釋屬性,并且只需在 POJO 上設置兩個屬性“questionId”和“answer1”,而不是構建字符串。
如果你這樣做,你最終會得到兩個類:
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<>();
}
現在,您只需創(chuàng)建一個 Body 對象,然后將任意數量的答案添加到answers 屬性中,然后使用 Body 對象作為改造界面上的參數。
注意:如果這樣做,則必須在構建時將 MoshiConverterFactory 添加到 RetrofitClient。

TA貢獻1815條經驗 獲得超10個贊
我假設您已經熟悉如何實現用于進行 API 調用的存儲庫和接口。
對于這種情況,您首先需要 DTO 來回答。
public class AnswerDTO
{
private String questionId;
private String answer1;
public AnswerDTO(String questionId, String answer1)
{
this.questionId = questionId;
this.answer1 = answer1;
}
}
現在您可以創(chuàng)建一個用于 API 調用的接口。
public interface QuestionsService
{
@FormUrlEncoded
@POST("requestUrlHere")
Call<Response> yourApiCall(@Field("answers[]") List<AnswerDTO> answers);
}
希望這可以幫助 !。
添加回答
舉報