亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如果響應與帖子類不同,如何從帖子請求中獲得響應

如果響應與帖子類不同,如何從帖子請求中獲得響應

蠱毒傳說 2022-12-15 15:59:35
我正在使用改造通過 api 將登錄詳細信息傳遞到我的服務器。api 的發布請求只接受電子郵件和密碼,但響應返回與 POJO 類包含的內容不同的 Json 格式。我如何處理 api 響應?我嘗試將響應作為 JSONObject 返回以幫助從 api 獲取 Json,但它不起作用。API 返回包含用戶名和登錄令牌的成功 json。    Call<LoginPost> call = apiLink.loginUser(useremail, userpassword);    call.enqueue(new Callback<LoginPost>() {        @Override        public void onResponse(Call<LoginPost> call, Response<LoginPost> response) {            if(!response.isSuccessful()){                String code = Integer.toString(response.code());                Toast.makeText(LoginPage.this, code, Toast.LENGTH_LONG).show();            }            else {             LoginPost postResponse = response.body();             Log.e("viewResponse",                    postResponse.getSuccessResponse().toString());               return;            }        }        @Override        public void onFailure(Call<LoginPost> call, Throwable t) {            Log.e("error in createNewUser",  t.getMessage());        }    });帖子類:@SerializedName("email")String userEmail;@SerializedName("password")String userPassword;public JSONObject getSuccessResponse() {    return successResponse;}@SerializedName("success")JSONObject successResponse;public String getUserEmail() {    return userEmail;}public String getUserPassword() {    return userPassword;}
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

在進行 Retrofit 調用時,不應為 Request 使用 POJO 類,而應使用與 Response 匹配的 POJO 類。因為這只是使用參數進行調用,所以您可能甚至不需要 Request 對象,但擁有一個也沒有壞處。


您的代碼看起來像這樣:


Call<LoginResponse> call = apiLink.loginUser(useremail, userpassword);


call.enqueue(new Callback<LoginResponse>() {

    @Override

    public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {

        if(!response.isSuccessful()){

            String code = Integer.toString(response.code());

            Toast.makeText(LoginPage.this, code, Toast.LENGTH_LONG).show();

        }

        else {

         LoginResponse postResponse = response.body();


         Log.e("viewResponse", 

               postResponse.getSuccessResponse().toString());


           return;

        }

    }


    @Override

    public void onFailure(Call<LoginResponse> call, Throwable t) {

        Log.e("error in createNewUser",  t.getMessage());

    }

});

為了進一步解釋發生了什么,當你創建你的參數化調用時,你告訴 Retrofit 使用哪個對象來解析響應,(如果你想使用一個對象作為發布主體數據,你需要以不同的方式聲明你的 API):


 @POST("auth/login")

 Call<LoginResponse> loginUser(@Body LoginPost body);


 Call<LoginResponse> call = apiLink.loginUser(LoginPost body);


查看完整回答
反對 回復 2022-12-15
  • 1 回答
  • 0 關注
  • 73 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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