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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

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

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。


查看完整回答
反對(duì) 回復(fù) 2023-11-01
?
動(dòng)漫人物

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

}

希望這可以幫助 !。


查看完整回答
反對(duì) 回復(fù) 2023-11-01
  • 2 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)