第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用改造在 api post 方法中將字符串作為正文傳遞?

如何使用改造在 api post 方法中將字符串作為正文傳遞?

心有法竹 2023-11-01 22:15:33
我正在開發(fā)一個 Android 應用程序,它發(fā)送用戶輸入的數據(通過編輯文本框),并調用 POST API 方法來在該 API 正文中發(fā)送此數據考慮 API URL 為“htpps://xxxxx.com/forms/xxxxxx/reponse”內容類型“Json(應用程序/json)”內容如下:{"answers":"[{\"questionId\":\"r8554145065f6486d8a362bec92030a06\",\"answer1\":\"xxxxx\"},  {\"questionId\":\"rf516c5bf916e4d6d960a1f8abc82f33b\",\"answer1\":\"xxxx\"}]"}我的問題是,如何將這種類型的主體傳遞給改造,而不是內容中的“XXXXX”,而是一個接受用戶輸入的字符串?
查看完整描述

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。


查看完整回答
反對 回復 2023-11-01
?
動漫人物

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);

}

希望這可以幫助 !。


查看完整回答
反對 回復 2023-11-01
  • 2 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號