2 回答

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

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